• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

suche shell-befehl um zu testen ob ein prozess läuft (suse)

MaN

Newbie
hi,

da ich ein Problem mit dem starten von einem programm hab (VDR),
möchte ich jetzt ein script schreiben mit dem ich überprüfen kann ob der prozess lauft, und wenn nicht ihn zu starten.

gibt es ein Befehl mit dem ich überprüfen kann ob der Prozess lauft und true oder false ausgibt?

Gruß

MaN
 

Zinnwurm

Hacker
Code:
TMP=`ps -e | grep $PROZESS`; if [ -n "$TMP" ]; then echo "ja"; else echo "nein"; fi
Die Variable $PROZESS eben durch deinen Prozessnamen ersetzen. die if ist natürlich beliebig anpassbar ^^
Ist vielleicht auch nicht die schlaueste Lösung, funzt aber bei mir. XD

EDIT: Und weil ich dumm bin, fiel mir erst jetzt auf, dass man sich die Variable sogar schenken kann
Code:
if [ -n "`ps -e | grep $PROZESS`" ]; then echo "ja"; else echo "nein"; fi

(Man achte daruaf, dass in beiden Fällen um den Ausdruck ps -e | grep $PROZESS Backticks (`) stehen, keine normalen Anführungsstriche.)
 
OP
M

MaN

Newbie
ich hab jetzt einfach anstatt der variabel $PROZESS vdr eingegeben.

habe mit top geprüft ob der prozess läuft. (er lief nicht) aber trotzdem wurde ausgegeben das der prozess läuft.

was mach ich falsch?



edit: ich hab jetzt das ganze mal mit einem anderen Prozess versucht (ein kleines script) und mit dem giengs...

aber mit vdr giengs immer noch nicht.

edit2: wenn wir schon dabei sind, wie lautet eigenltich die Abfrage ob ein Verzeichnis oder eine Datei vorhanden ist?
 
OP
M

MaN

Newbie
wenn ich top eingebe sehe ich mehrere prozesse mit dem namen vdr. also ich denke mal es heist schon so... die datei zum starten heist auch vdr.
 

regexer

Advanced Hacker
Zinnwurm schrieb:
EDIT: Und weil ich dumm bin, fiel mir erst jetzt auf, dass man sich die Variable sogar schenken kann
Code:
if [ -n "`ps -e | grep $PROZESS`" ]; then echo "ja"; else echo "nein"; fi
Man kann sich sogar die test-klammern und die Backticks schenken, weil if auch alleine zwischen Returncode 0 und 1 unterscheiden kann...
Code:
if ps -e | grep $PROZESS; then echo "ja"; else echo "nein"; fi
Allerdings sollte man sicherstellen, dass $PROZESS wenigstens mit irgendetwas gefuellt ist, sonst gibt's einen Fehler wegen fehlender Parameter ...
 
Oben