PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shell Script, prüfen ob Prozess noch läuft



ManuelW
15-07-2005, 08:45
Hallöchen, ich bräucht bitte grad mal einen Tip.

Bin mit dem Shellscripting nicht sonderlich vertraut und hab auch schon google befragt, aber so richtig finde ich nix.

Ich brauch ein kleines Shellscript, welches aller X sek (ich denk mal zwischen 10-30) schaut ob ein bestimmter Prozess noch läuft und ihn neu startet falls nicht.

Ich hatte auch schon mal ein ähnliches script, aber ich find es nicht wieder :/

Kann mit jemand grad auf die Sprünge helfen ?

Danke Manu

Detrius
15-07-2005, 11:03
Schau halt mit pidof nach, ob er noch eine Prozess-ID hat. Wenn ja, läuft er noch, wenn nein, dann läuft er nicht mehr.

nEox
15-07-2005, 18:07
Hallo Manuel,

hatte mal ein Script geschrieben, weil ein Programm immer abgeschmiert ist:


#!/bin/sh

# Name of program in ps-list
NAME="Azureus*"

# Dir to program
DIR="/dev/fs/P/azureus/Azureus.exe"


clear

# check if running
if ( ps -a | grep "$NAME" )
then
echo "$NAME is running..."
else
echo "$NAME NOT running! Restarting..."
$DIR &
echo "$NAME restarted"
fi

exit 0

Nicht wegen den Pfaden wundern, ist mit Windows Services for Unix gemacht. Wollte das Teil mal testen.

Du musst dann noch einen CronJob anlegen.

crontab -e
und dann da rein ("i" drücken zum Einfügen, "ESC" um wieder aus dem Einfügen-Modus rauszukommen und ":wq" zum speichern und verlassen):

*/5 * * * * /dev/fs/C/progrestart.sh
Hier wird angegeben das das Script alle 5 Minuten aufgerufen wird.
Google einfach nach Cronjob dann findest du ne Erklärung wenn eine andere Zeit willst.


Pfade musst natürlich noch anpassen.

Gruß
nEox

ManuelW
15-07-2005, 20:29
ah, vielen Dank für die Antworten. Das mit Cron ist kein Thema, da kenn ich mich aus.

Mit Cron ist das auch ne Möglichkeit, ich hatte da sleep im Hinterkopf, aber ich denk so ist es besser :)

also Danke nochmal, Manu

Travolds
03-08-2005, 17:20
hi,

für sowas is unter unix/linux der init prozess zuständig

/etc/inittab

man inittab
man init

lg

Detrius
03-08-2005, 17:32
für sowas is unter unix/linux der init prozess zuständig

Nein, das kümmert sich um andere Sachen. :p

Welche Dienste bei betreten bzw. verlassen der einzelnen Runlevel gestartet/gestopt werden, hilft hier wohl kaum weiter. ;)

Jasper
03-08-2005, 17:45
Nein, das kümmert sich um andere Sachen. :p


nein, travolds hat vollkommen recht.



Welche Dienste bei betreten bzw. verlassen der einzelnen Runlevel gestartet/gestopt werden, hilft hier wohl kaum weiter. ;)

man inittab, action 'respawn'


-j

Detrius
03-08-2005, 17:55
Klar gibt es respawn, aber dann hab ich den Prozess immer laufen. Mir schien es so, als wenn es hier eher um darum geht temporär zu überprüfen, ob ein Prozess noch läuft.

Jasper
04-08-2005, 18:54
Klar gibt es respawn, aber dann hab ich den Prozess immer laufen. Mir schien es so, als wenn es hier eher um darum geht temporär zu überprüfen, ob ein Prozess noch läuft.

siehe post des OP: teste ob läuft, wenn nicht -> restart. prozess soll also immer laufen.


-j

RapidMax
06-08-2005, 16:26
Ansonsten gibt es noch - sofern man mit den Lizenzbedingungen einverstanden ist - die daemontools (http://cr.yp.to/daemontools.html), welche das Restarten von Services übernehmen, sofern diese beim Start nicht forken (z.B. als daemon laufen).

Gruss, Andy