Mini Watchdog für einzelne Prozesse (13.02.14)
Dieser Beitrag wurde 11796 mal angezeigt.
Mini Watchdog für einzelne Prozesse
Hy Leute,
ich habe mal einen kleinen Wachhund geschrieben der einzelne Programme überwacht.
Wer sich nicht mit der Problematik des Linux und des Konfigurierens auseinandersetzen möchte,
darf sich gerne mein Angebot ansehen und ein komplett eingerichteten Pi oder Image bekommen.
Warum?
Nun, nachdem der BFGMiner bei den ANTMinern nicht gerade die Leistung bringt,
die er eigentlich haben sollte, habe ich mich entschieden wieder auf den CGMiner zu setzen.
Dieser wurde aber nachdem ich mein Raspcontrol durch eine SQLite Datenbank und einem Apache Server erweitert hatte, zunehmend instabil.
Der CGMiner schmierte ab, ohne den Pi mit zu nehmen. Also griff der große Wachhund, Watchdog nicht. Der Pi lief weiter frei herum und arbeitete nicht mehr.
Also was machen?
Ein kleiner Wachhund muss her, der sich nur um 1 Programm kümmert. Wenn dieses nicht mehr da ist, soll er den ganzen Pi per Reboot neu starten.
Der Grund ist, das wenn der CGMiner abschmiert, er die USB-Ports weiterhin blockiert und nicht wieder frei gibt.
Nun zum eingemachten
Wir verbinden uns per Shell auf den Pi und wechseln in das Home/Pi Verzeichnis.
cd /home/pi/ nano checkrun.sh
Nun fügen wir dieses hier ein :
#! /bin/bash case "$(pidof cgminer | wc -w)" in 0) echo "Restarting: $(date)" >> /var/log/cgminer.txt sudo reboot ;; 1) # all ok #echo "All Good at cgminer: $(date)" >> /var/log/cgminer.txt ;; *) echo "Removed double cgminer: $(date)" >> /var/log/cgminer.txt kill $(pidof cgminer | awk '{print $1}') ;; esac
und speichern diese Datei mit Strg-X und anschließend „y“ oder „j“ fürs speichern.
Nun müssen wir unsere Datei noch ausführbar machen:
sudo chmod +x checkrun.sh
Was bedeuten unsere Fälle?
Fall 0 = Was soll gemacht werden wenn der Prozess „cgminer“ nicht läuft.
Fall 1 = Was soll gemacht werden, wenn das Programm läuft.
Fall * = Was soll gemacht werden, wenn das Programm mehrfach läuft.
Mit diesem Wissen können wir also noch andere Programme beobachten z.b. den BFGMiner oder Apache2 , wenn wir wollen.
Im Minutentakt kontrollieren.
Damit unser Mini Watchdog auch regelmäßig nach dem rechten schaut, muss es ihm jemand sagen.
Dazu öffnen wir unsere /etc/crontab
nano /etc/crontab
und fügen ans Ende der File dieses ein:
* * * * * root /home/pi/checkrun.sh
und schließen nano wieder. Nun wird unser Wachhund jede Minute auf unseren CGMiner los gelassen und wenn dieser fein seine Arbeit macht, ist alles gut. Wenn nicht, gibs nen reboot 🙂
Viel Spass beim minen!
Ich hoffe euch hat mein Beitrag gefallen.
Wenn dir mein Beitrag gefallen und geholfen hat dich besser in der Welt der Bitcoins zurecht zu finden, würde ich mich freuen wenn ihr meine Seite und mein Wochenende durch eine kleine Spende unterstützt.
Mit der neusten Bitcoin-Wallet oder auf Blockchain.info/wallet ist es möglich auch CENT Beträge (µBTC) ohne Mining-Gebühren zu senden.
Wer gerne etwas für die Kaffee/Bier Trinkgeld Kasse und Erhalt der Seite spenden möchte :
BTC: 1LvETe6uTP64hK3UR3oSAdzT5ZjLnttqBm
DEM: NWtFftChrx28mvYgqfopmDejxoHiZmAK7u
Hiho 😉
Hab eine Frage und ein Hinweis
Hinweis : Zur Minutentakt kontolle ist es nicht einfache mit (sudo crontab -e) zu arbeiten da könnte der cron eintrag so
( */1 * * * * /home/pi/Scripte/apache2-checkrun.sh) aussehen
Frage : Muss man für jeden Service ein nees Script anlegen oder kann man es in einem Script zussammen fassen falls ja wie müsste das ungefähr mit cgminer und apache2 aussehn ?
Besten Dank für deine tolle Arbeit
Gruß Itow
Hallo Sven,
Das ist ja perfekt der Wachhund 🙂
Habe festgestellt das bei einem reboot, die 1min nicht aussreicht um den CGMiner zu starten, dadurch macht er immer wieder einen rebbot nach 1 min. Spricht eigentlich etwas dagegen den Wachhund nur alle 5 min auzuführen?
Moin,
Ganz und garnicht.
Du kannst selbst entscheiden wann dieser prüfen soll.
z.b.
*/5 * * * * ...
dann prüft er alle 5 min.Beste Grüße,
funktioniert der watchdog eigtl. mit der aktuellen cgminer version?,
bei mir stürzt der cgminer trotz watchdog und mini watchdog ca. alle 24 std ab.
kann man da evtl. ne log auslesen das man sehen kann woran das liegt?
bin noch relativ neu in der materie…
so weit ich weiß kommt ab und zu der fehler: GetResults usb read err:(-1) LIBUSB_ERROR_IO
attempted reset got err:(0) LIBUSB_SUCCESS
Hy Andi,
der Mini Watchdog ist nur ein Shell Script, das per Cronjob aufgerufen wird.
Das Script prüft, ob es ein Programm mit dem entsprechenden Namen gibt.
0) = Es wurde kein Prozess mit dem Namen gefunden.
In der selben Zeile steht echo …. >> … log/cgminer.txt Das heißt er loggt das es einen Restart gab mit Zeitangabe.
In der nächsten Zeile steht der Befehl der ausgeführt wird. Reboot. Also das System neustarten. Du kannst natürlich auch nur den Prozess neustarten, aber es kann halt sein das die USB geräte blockiert sind, und die werden nur durch einen Reboot wieder sauber frei.
ja, soweit hab ich das ja verstanden, hab ihn auch auf 5 min gestellt nur weiß ich nicht genau, muss hier den / mit einfügen oder nicht?,
nur wundert mich wieso weder der watchdog greift wenn der cgminer voll abschmiert noch der mini watchdog das er den prozess neustartet.
Zur info: hab 3 antminer u3 direkt an einen pi b+ ohne usb hub hängen, hab noch einen 2er – hier kommt jedeoch das selbe problem. Hab es auch mit minera probiert da kommt auch das selbe. USB strom kabel + netzteil habe ich schon mehrfach gegen hochwertige getauscht, nur die usb kabel zu den minern noch nicht. Kann es vielleicht an den kabeln liegen? oder ist es ein reines software problem, kann man das sagen?
gruß
Hallo, der Watchdog ist super.
Kann ich mit dem auch prüfen ob ein bestimmtes Python Script läuft. Hintergrund: Bei mir laufen parallel 2 Pythonscripte. Es soll geprüft werden ob beide laufen. Sobald nur eins oder keines der beiden Scripte läuft, soll gebootet werden.