Checken ob ein Prozess läuft!

M

MindCode

Grünschnabel
Hallo,

ich möchte gerne ein Script schreiben, welches mir aussage darüber geben kann, ob ein bestimmter Prozess läuft oder nicht.
(Dabei handelt es sich um den Shoutcast Server [Internet Radio Stream])

Wenn ich da Script ausführe, soll mir das Script erzählen ob der Prozess (sc_serv) läuft.

Nach ewigem googeln bin ich auf die Idee gekommen, dass ich ja folgendes machen könnte:

Code:
ps u >> sc_servcheck

if [ "$(cat sc_servcheck)" = "sc_serv" ]; then

echo "JA"
else
echo "NEIN"

fi


Ja, das war zwar ne nette Idee, hat aber nicht geklappt :-(
Ich bekomme immer mein else obwohl der String "sc_serv" in der Datei "sc_servcheck" drin ist :-(

Lg,
Philipp
 
probiers mal in dieser richtung

ps aux | grep $prozess
if [ $? = 0 ];then
echo "OK"
fi

aber guck auch weil wenn du das so machst bekommst du evtl den eintrag von grep selbst mit rein also am besten frägst du die PID von grep noch ab und machst ne Bedingung, dass mindestens ein Prozess ohne der PID gefunden wird.


EDIT:

Oder vll ist es in deinem Fall gut einen Dämon zu schreiben, wenn du das Programm beim start gleich laufen lassen willst.
Oder alternativ einfach ein startskript, das dein Programm startet und die PID von deinem Programm in eine Datei schreibt und du checkst einfach nur ob die PID noch läuft.
 
Schon mal etwas wie
Code:
if ps -eo comm | grep sc_serv; then
    echo "läuft"
else
    echo "läuft nicht"
fi
probiert?

Gruss, A.
 
Schon mal etwas wie
Code:
if ps -eo comm | grep sc_serv; then
    echo "läuft"
else
    echo "läuft nicht"
fi
probiert?

Gruss, A.

WoW - Alles klar das funktioniert ;)
Allerdings habe ich dann als Output dann jenes hier:

Code:
sc_serv
 +++ Shoutcast server is running +++

Wie krieg ich jetzt das "sc_serv" da weg?
Gibts da nich n silence mode?
 
Du musst die Ausgabe umleiten. Z.B. mit
> /dev/null
also das einfach nach dem grep Befehl (mit Suchwort)

EDIT sieht dann so aus:

if ps -eo comm | grep sc_serv > /dev/null; then
echo "läuft"
else
echo "läuft nicht"
fi

mit > leitest du die Ausgabe um.
 
Ahhh dankeschön :-)
Habt mir sehr geholfen...

/dev/null

das kenn ich irgendwo her, was isn das? das nirvana?
 
Jap das ist sozusagen das nirvana ;)
mit 2> leitest du Fehlerausgaben um also wenn du ein Programm aufrufst und willst keine Fehler sehen dann leitest du stderr um.
Mit > kannst dus auch in eine Datei umleiten.
 
Dafür gibt's doch ne in ps direkt integrierte Lösung:
Code:
ps nc -C PROZESSNAME
Das liefert 0 zurück, wenn der Prozess läuft, und 1 wenn dem nicht der Fall ist. Ließe sich also bequem per
Code:
ps nc -C BLA && TUWASWENNJA || TUWASWENNNEIN
auswerten
 

Ähnliche Themen

Queue für copy Script

Problem bei autostart / Ausführung mit meinem SH-Script

Prozess aus eigenem Init script wird gekillt

Hilfe zum Thema kill prozesse

Script defekt

Zurück
Oben