PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script -> Binary neustart



nr8
05.05.08, 12:45
hallo.

ich brauche ein script das eine binary startet und das diese falls sie einmal abstürzen sollte (aus welchen grund auch immer) wieder neu startet.
kann mir da wer helfen?

danke

marce
05.05.08, 12:57
Was verstehst Du unter "Hilfe"?

Ansonsten: ps -fe, grep -c, while, sleep - wären so die Befehle, die mir dazu einfallen würden...

Veierabend
05.05.08, 13:00
#!/bin/bash

while true ; do
/pfad/zum/programm [Option]
done ;
Wär die simpelste Variante. Irgendwo abspeichern, ausführbar machen und zb über /etc/rc.local aufrufen.

marce
05.05.08, 13:01
... würde das Programm innerhalb von 1 sec. ca. 200x starten - je nach Performance des Rechners.

Veierabend
05.05.08, 13:03
Nur wenn ein & dahinter stünde oder es sich um nen Daemon handelt. Ansonsten läuft die Schleife erst weiter, wenn das Programm beendet wird.

marce
05.05.08, 13:08
ok - einigen wir uns darauf: es hängt davon ab, wie sich das Programm nach seinem Start verhält.

Veierabend
05.05.08, 13:13
Jup :)

1234567890

Aqualung
05.05.08, 14:31
hallo.
ich brauche ein script das eine binary startet und das diese falls sie einmal abstürzen sollte (aus welchen grund auch immer) wieder neu startet.
kann mir da wer helfen?


Ist hierfür nicht ein Eintrag in


/etc/inittab

geeignet?

Gruß Aqualung

nr8
05.05.08, 14:49
... würde das Programm innerhalb von 1 sec. ca. 200x starten - je nach Performance des Rechners.

genau das tu es...
egal ob ein & oder kein & dabei ist.

m.o.o.
05.05.08, 14:55
Dann forkt das gestartete Programm wohl weg.

Versuch mal das Programm mit "programm &" zu starten, dann hast du (AFAIR) mit $! die PID und mit ps kannst du alle paar Sekunden überprüfen, ob der Prozess noch läuft.



#!/bin/bash

while true ; do
/pfad/zum/programm &
while [ "`<ps-Aufruf der nach $! sucht>`" ]; do
sleep 1;
done;
done ;


<ps-Aufruf der nach $! sucht> ist noch entsprechend abzuändern.

Gruß, Florian

EDIT: u.U. ist die PID in $! nicht die richtige, weil das Programm nach dem Starten forkt. Arbeite besser mit pgrep und such nach dem Programmnamen in der inneren while-Schleife.

marce
06.05.08, 06:35
Ist hierfür nicht ein Eintrag in

/etc/inittab
geeignet?
Das würde ja nur dafür sorgen, daß das Progrämmchen beim Booten gestartet wird - aber nicht dafür, daß es erneut gestartet wird, wenn der Prozess wegstirbt...

Blackhawk
06.05.08, 08:35
Stichwort inittab

Das würde ja nur dafür sorgen, daß das Progrämmchen beim Booten gestartet wird - aber nicht dafür, daß es erneut gestartet wird, wenn der Prozess wegstirbt...

Stimmt nicht, guck Dir inittab mal genau an, vor allem die action respawn.

marce
06.05.08, 08:45
Oh, Mist - mein Lesen hat bei /etc/init aufgehört - und vermutet, da käme was mit rc.x und so weiter...

/etc/inittab ist natürlich was anderes.

Ich geh' mir gleich noch mal 'nen Kaffee holen - kann ja nicht angehen...