Automatischer Programmrestart

Ich suche ein Prog in einfacher Bat form das es mir möglich macht ein Programm zu restarten fals es ausgehen sollte.

Es soll dann erst ein anderes Programm ausführen und dann das alte das down gegangen ist.

bin für alles Dankbar!
 
Ich habe mich lange nicht mehr mit Bash-beschaeftigt, aber es muesste folgendermassen aussehen:
1.
ps -c aufrufen
2.
die Ausgabe auswerten, wenn es laeuft mache nichts.
3.
falls es nicht laeuft,
3.1 starte Programm 1
3.2 starte eigentliches Programm

Ich rate hier mal dazu den aufruf von Cron machen zu lassen, kannst es ja einmal in der Minute machen oder so, denn wenn du das von dem Skript selbst machen laesst, dann gibt es das Problem, das es schwirig wird das Skript zu beenden und es vorher nochmal sich selbst aufrufen zu lassen, denn wenn du Pech hast kannst du dir auf diese Weise dein System selbst abschiessen, und das ganz ganz schnell, schau mal unter Forkbombe nach.
Fuer die auswertung empfehle ich awk oder sed, obwohl ich sed nie dazu bekommen habe das zu tun was ich wollte(schande ueber mich) und pipes.
Hoffe ich konnte helfen.
sw33t
 
Einfache Endlosschleife sollte hier denk ich reichen, aber wie man die nochmal macht... puh, zu lange nix mehr in der cmd gemacht.
 
bitte sehr

ICh hab´s.
Hat mich doch zu sehr gewurmt das ich das nicht mehr auf Anhieb konnte, man kann zwar nicht alles und das was man kann auch nicht immer aber es ist sehr erschreckend was man nicht alles ueber die Zeit vergisst. :(
Das Skript musst du nur noch deinen beduerfnissen anpassen.
Code:
#!/bin/bash#die shell mit der alles arbeiten soll
was=$(ps -A|grep firefox-bin$|awk '{print $4}')#sucht nach dem entsprechenden Programm
if [ "$was" == "$1" ]
#vergleich die werte $1 ist das erste ARgument das an das Skript uebergeben wird
                     # so kannst du z.b. mit $0 das skript selbst nochmal aufrufen udn mit $1 den parameter
                     # uebergeben, das ist die endlosschleife die angesprochen wurde
                    # dieses Dingen ist dann allerdings auch wieder rekursiv was nicht gut ist
                    #also entweder cron oder du baust eine while-schleife ein
then (echo "es laeuft")
else                            #diese 3 zeilen sind denke ich selbsterklaerend
(echo "laeuft nich") fi
was= #setz die variable wieder auf null, kannst natuerlich auch noch ein kleines
     #extra einbauen damit die variable wieder den Wert hat den sie vorher hatte

#fuer weitere referensen siehe man awk, man grep, ps -h(ist kompakter) und man bash (viel spass #beim lesen
#optional tun es auch tutorials, was ich empfehle, denn die INformationen in man bash sind zwar #richtig, aber
# nicht unbeingt gut zu handhaben
 
schoen, was mir gerade auch wieder eingefallen ist:
in der Zeile wo was einen Wert bekommst kannst du auch einfach anstelle
...|grep firefox-bin$|....
...|grep "$1"$|....
schreiben, dies macht das Skript viel brauchbarer und du kannst nach mehr als nur dem beschrieben Programm suchen.

//edit, oder wenn du Performancefreak bist
was=$(ps -A |grep "$1"$)
$was[4]
das gibt dann auch den obigen Wert aus, nur fuer den fall, denn awk ist schon langsamer als die normale Bash.
mfg
 
Zurück
Oben