Shellscript soll laufenden Prozess suchen
-
Hallo,
ich habe ein Problem das ein bestimmtes Programm sich unerklärlicher weise "selbst" beendet (wie auch immer)
Bis ich den Fehler oder den schuldigen gefunden habe möchte ich ein Shellscript alle 1/2 Stunde laufen lassen das mir die laufenden Prozesse anzeigt und nach einem bestimmten Programmnamen durchsucht. Sollte der Prozess nicht existieren dann wird dieser einfach gestarte.
Das ist zwar nicht elegant aber auf die Schnelle eine Lösung.Shellscript hatte ich schon einige Kleinigkeiten gemacht...aber sowas noch nicht.
Es sollte so nach dem Motto funktionierenwhile {
find "Programmname" | ps
if (nicht dabei) starte Programmname
sleep 1/2 Stunde
}Danke
worst_case
-
#!/bin/bash
while true
do
if [ $(ps -e | grep programmname | wc -l) > 0 ]; then
programm
fi
sleep 1800
done
-
Alternativ man: pgrep verwenden.
-
das einfachste und sicherste (falls ein programm unter gleichem namen läuft) dürfte IMHO wohl "pidof /path/to/program" sein... das halt dann in ein script verwurschteln... zb imhoteps
-
Ähm wie wärs das ganze in der Konsole zu starten (aber nicht als Dämon), dann kannst du dir die ganzen Fehlermeldungen ansehen und dein skript so gestalten:
while true
do
"pfad zu programm"
doneDas wäre doch am einfachsten dann läuft das Prog immer...
-
Hallo,
ich habe es wie "imhotep" beschrieben, gemacht...und es funktioniert.:D
Nun möchte ich es aber noch verstehen.
Die Befehle sind soweit klar, bis auf "wc -l" ...was bedeutet das bzw. was macht das Script da.Danke
worst_case
-
worst_case schrieb:
Die Befehle sind soweit klar, bis auf "wc -l" ...was bedeutet das bzw. was macht das Script da.
"wc -l" zählt Zeilen.
Im Falle dieses Skripts wird ausgewertet, ob "ps -e | grep programmname" irgendwelche Resultate liefert.flammenvogel: Schlechte Idee.
Crax: pidof ist dafür nicht so gut wie pgrep geeignet, zumindest wenn Du nicht weißt, mit welcher Kommandozeile das Programm gestartet wurde.
-
warum ist das ne schlechte idee?
man kann das jetzt noch um einen schutz erweitern der das skript abbricht wenn der prozess zu schnell beendet wird ...