Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » Programm/script zum Process überprüfen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
18.04.2003, 16:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
wie kann man folgendes am geschicktesten machen:

1. Überprüfen ob ein bestimmter Process existiert anhand des Programmnamens)
2. Überprüfen ob der Process reagiert

Bei Erfolg soll das Programm erfolgreich beendet werden, bei Fehler soll die Ausführung fehlschlagen...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.04.2003, 19:11 Uhr
~0xdeadbeef
Gast


Zu 1:

Code:
ps a | grep programmname


Und dann entsprechend weiterverarbeiten; für den Fall, dass du die PID brauchst, zum Beispiel. Dafür bietet sich sed an.

Zu 2.: Worauf soll er denn reagieren? Signale schicken kannst du mit kill (Das heißt nur kill, weil es default ein SIGTERM schickt). Wenns darum geht, zu überprüfen, ob der Prozess ein Zombie ist - wenn der Prozess ein Zombie ist, schreibt ps ein <defunct> (ich hoffe, das kommt jetzt richtig an, es sollte da stehen: ich fress dich gleich defunct friß mich) in die Zeile.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.04.2003, 19:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja

ich habe einen programmmonitor installiert, welcher ein programm neustarten soll sobalds das programm hängt bzw sich verabschiedet hat.

Dieser monitor macht das nur folgendermaßen:

Testprogramm: [...]
Programm bei Erfolg starten: [...]
Programm bei Fehlschlag starten: [...]

wenn ich da als TestProgramm ps | grep programmname mache, startet er mir nie das programm welches unter fehlschlag drin steht, da ps success zurückliefert, auch wenn es keinen prozess mit dem entsprechenden namen findet...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.04.2003, 09:53 Uhr
~0xdeadbeef
Gast


Dann nimm halt den Wert von $(ps | grep programmname), das gibt das zurück, was der Befehl zwischen den Klammern nach stdout gibt.

Übrigens - der Rückgabewert 0 kommt nicht von ps, sondern von grep.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.04.2003, 10:36 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


das $(ps | grep programmname) nützt auch nix, jetzt zeigt er mir an das der Prozess ok ist, egal ob er wirklich existiert oder eben nicht ...

kann man nicht irgendwie ein script schreiben welches dann halt eben den prozess überprüft, wenn er existiert mit 0 beendet wird, ansonsten mit fehler?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.04.2003, 23:52 Uhr
~0xdeadbeef
Gast



Code:
#! /bin/sh

if [ -z $(ps ax | grep programmname > /dev/null) ]
then
    echo Prozess läuft nicht.
else
    echo Prozess läuft.
fi


Löst das dein Problem?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.04.2003, 23:53 Uhr
~0xdeadbeef
Gast


Ähm, Moment; natürlich nur mit ps -a. Wenn dus unbedingt über Rüclgabewerte machen willst, gib statt der echo-Befehle halt exit 1 bzw. exit 0 an und ruf das Skript aus deinem Skript auf.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.04.2003, 00:10 Uhr
~0xdeadbeef
Gast


Ach so, noch eins; wenn du das Skript so benennst, dass der ursprüngliche Programmname darin vorkommt, solltest du das ganze so abändern, dass ps das Skript nicht findet, also so:

C++:
if [ -z $(ps -a programmname | grep -v "$0") ]
    exit 1
else
    exit 0
fi

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.04.2003, 07:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ok danke, werde ich nachher gleich mal ausprobieren!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.04.2003, 10:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hmm ich habs nun mal getestet, nur ich kriege immer exit 1...

obwohl der prozess läuft ...


C++:
//check.sh: (< steht nicht drin keine angst :D)

#!/bin/sh

if [ -z $(ps -e | grep britannia_svr > /dev/null) ]
then
  echo "nicht gefunden" (< hier springt er immer rein)
  exit 1
else
  echo "gefunden"
  exit 0
fi


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: