Bulletprof hat geschrieben:Ich glaube ich habe es verstanden !
Sehr schön.
Code: Alles auswählen
#!/bin/sh
count=$(ps aux | grep -v grep | grep -c programm1)
if [ "$count" -lt 1 ]; # Programm1 läuft nicht
then
echo "`date` programm1 läuft nicht, reload beginnt jetzt" >> /pfad/programm_check.log
killall -9 /pfad/programm2
echo "`date` programm2 wurde beendet" >> /pfad/programm_check.log
sleep 10
/pfad/programm1 &
echo "`date` programm1 wurde neu Gestartet" >> /pfad/programm_check.log
sleep 20
/pfad/programm2 &
echo "`date` programm2 wurde neu Gestartet" >> /pfad/programm_check.log
echo "`date` Server läuft wieder Optimal" >> /pfad/programm_check.log
echo "---------------------------------------------------------" >> /pfad/programm_check.log
sleep 10
fi
Einrückungen erleichtern das Lesen von Code.
Ich habe es wieder mit grep gemacht weil es super wäre wenn das script unter ubuntu genauso läuft wie unter debian.
Ich habe grep nur entfernt wegen der Variablen, nicht wegen Ubuntu, mein Ansatz sollte auch unter Ubuntu laufen, aber wenn Dir die grep-Lösung besser gefählt ist das kein Problem.
Und seid einer halben stunde lasse ich es laufen und stoppe auch mal von hand. Bis jetzt macht er alles richtig !
Es sind ja 2 programme die in der richtigen reihenfolge gestartet werden müssen deswegen muss ich erst programm2 beenden und dann wieder nacheinander starten.
Was meinst du könnte man das so lassen oder kann man was verbessern ?
Wenn programm1 öfter nicht läuft kannst Du das Skript per Cronjob regelmässig laufen lassen und Du solltest Dir überlegen, ob es reicht, nur die Zeiten des Ausfalls und Startens in die Logdatei zu schreiben. Für solchen Infos kannst Du Dir auch eine Mail schicken lassen.
Das Beenden von programm2 würde ich so machen
Gruß
JaKlaRo