Linux Script um zu überprüfen, ob der Prozess läuft & amp; Handeln Sie auf das Ergebnis
Ich habe einen Prozess, schlägt Sie regelmäßig & manchmal beginnt die doppelte Instanzen..
Wenn ich ausführen:
ps x |grep -v grep |grep -c "processname"
Ich erhalten:
2
Dies ist normal, da der Prozess läuft mit einer recovery-Prozess.
Wenn ich
0
Ich werde wollen, um den Prozess zu starten
wenn ich bekommen:
4
Ich werde aufhören will zu & starten Sie den Prozess
Was ich brauche ist ein Weg, wenn man das Ergebnis ps x |grep -v grep |grep -c "processname"
Dann setup eine einfache 3 option Funktion
ps x |grep -v grep |grep -c "processname"
if answer = 0 (start process & write NOK & Time to log /var/processlog/check)
if answer = 2 (Do nothing & write OK & time to log /var/processlog/check)
if answer = 4 (stot & restart the process & write NOK & Time to log /var/processlog/check)
Den Prozess gestoppt wird mit
killall -9 process
Der Prozess wird gestartet mit
process -b -c /usr/local/etc
Mein Hauptproblem ist das finden einer Weise zu handeln, die auf das Ergebnis ps x |grep -v grep |grep -c "processname"
.
Im Idealfall würde ich mag, um das Ergebnis des grep-eine variable in das Skript mit so etwas wie dies:
process=$(ps x |grep -v grep |grep -c "processname")
Wenn möglich.
InformationsquelleAutor der Frage linuxnoob | 2013-11-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Skript, das ich verwenden, um zu überwachen, ob ein Prozess auf einem system ausgeführt wird.
Skript gespeichert in
crontab
und läuft einmal pro minute.0
Wenn der Prozess nicht gefunden wird, starten Sie es neu.1
Wenn Prozess gefunden wird, alles ok.*
Wenn der Prozess ausgeführt wird, der 2 oder mehr, töten die Letzte.Einer einfacheren version. Dies nur testen, wenn der Prozess ausgeführt wird, und wenn Sie es nicht neu starten.
Es nur tests der exit-flag
$?
von derpidof
Programm. Es wird0
der Prozess läuft und1
wenn nicht.InformationsquelleAutor der Antwort Jotne
Nahm ich den @Jotne Lösung und funktioniert perfekt! Zum Beispiel für den mongodb-server in meinem NAS
InformationsquelleAutor der Antwort Tirias
Habe ich angenommen, Ihr Skript für meine situation Jotne.
Während ich Tests wurden, rannte ich in ein problem..
Ich fing 3 zusätzliche Prozess von oscam1 mit dieser Zeile:
/usr/local/bin/oscam1 -b -c /usr/local/etc/oscam1 -t /usr/local/tmp.oscam1
welche Links mich mit 8-Prozess für oscam1. das problem ist dieses..
Wenn ich das Skript ausführen, Es tötet nur 2 Prozess-zu einer Zeit, ich hätte also führen Sie es 3 mal, um es bis zum 2.
Andere als
killall -9 oscam1
gefolgt von/usr/local/bin/oscam1 -b -c /usr/local/etc/oscam1 -t /usr/local/tmp.oscam1
im*)
gibt es einen besseren Weg, um killall abgesehen von den original-Prozess? So würde es keine Ausfallzeiten?InformationsquelleAutor der Antwort linuxnoob
Verwenden Systemctl in linux. Es ist neue Art und Weise zu überwachen systemD-Dienste und Einheiten. Erfahren Sie hier mehr https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units
InformationsquelleAutor der Antwort vadiraj jahagirdar