Script zum Überwachen laufender Prozesse/Programme

dj1985

Mitglied
Mitglied seit
5 Jul 2006
Beiträge
459
Punkte für Reaktionen
0
Punkte
16
Wenn ich das so richtig sehe, sind *.sh Dateien kleine Programme vom Aufbau her ähnlich wie unter Windows "*.bat" Dateien oder php. im Grunde also sieht es recht einfach aus.

Kann man mit einer "*.sh" überprüfen lassen ob bestimmte Dienste/programme gerade laufen?

Und im Falle das sie nicht laufen (da Absturz, etc) sie einfach wieder starten?

Wenn ja wie müsste die "*.sh" Datei aussehen?

Mein Plan ist es nämlich crontab das aller x Minuten überprüfen zu lassen,
zum Beispiel Bip (der Stürzt gern mal aus unbekannten Gründen ab sobald ich mit Trillian Connecte, aber eben nicht immer)
Meistens merke ich das erst dann wenn ich schon den halben Tag Online war und Wundere mich dann über die Ruhe die vom IRC ausging^^ --> Kein Wunder bip war ja ne mehr da^^


Dann würde mich noch mal interessieren wie ich das mit Crontab genau machen kann :D

"Minute Stunde Tag Monat Wochentag Befehl" steht dort als Syntax da, aber kein wirkliches Beispiel.

Wie müsste es also aussehen wenn ich die neue "*.sh" Datei aller 5 Minuten ausführen lassen möchte?


Danke für die Hilfe

MfG
dj1985
 
Ich würde dir den Befehl "pidof" empfehlen um zu überprüfen, ob ein Prozess läuft. Wenn der Prozess nicht mehr läuft, dann kannst du ihn mit "bip blablub" wieder neu starten.
Wie eine crontab auszusehen hat findest du über google.

MfG Oliver
 
Ja pidof ist mir bereits bekannt und nutze ich auch regelmäßig.
Zum beispiel um mit "kill 1234" Programm x zu "killen"

Aber wie kann ich das ich das ganze weiter verarbeiten?

"pidof ngircd"
gibt mir da es läuft "18363" an

if (pidof ngircd == "")
{
ngircd -p -f /tmp/flash/ngircd.conf
}

Wird wohl nicht gehen XD
 
Shell-Scripting ist ein wenig anders. Gibt aber gute Howtos dazu :)
 
Ich glaube ich habe da was interessantes gefunden.

http://www.mrunix.de/forums/archive/index.php/t-40087.html

Code:
#!/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


Aber könnte das so auf der 7270 funktionieren wenn ich die Dateinamen und Pfade ändere?

Weil oben hieß es ja mal was mit pidof... und das ist hier nicht vorhanden.

Ich weiß ja noch ne mal was "ps -a | grep "$NAME"" genau machen.
 
Dann bemühe mal Google und such etwas zu Shell Programmierung. Hier ist nicht der Platz, um einen Lehrgang zur Shell zu wiederholen.
 
Warum wiederholen?

Ich versuche dass, das erste mal :D

Darum Frage ich ja auch speziell hier.
Da hier die benötigten Experten vorhanden sind.
Von denen ich lernen kann.
Und die auch wissen welche Befehle von der Anlage/Freetz Unterstützt werden und welche nicht. ;)

Und wenn man nicht weiß nach was man genau Suchen muss hilft einen die Beste Suchmaschine nix.

Darum fragte ich ja ob das oben genannte Beispiel überhaupt funktionieren würde.

Sprich habe ich schon das nötige gefunden, oder steckt da noch mehr dahinter...
 
Code:
[ -z $(pidof ngircd) ] && ngircd -p -f /tmp/flash/ngircd.conf
MfG Oliver
 
Ah vielen Dank,
hab mir eine kleine .sh gebaut
Code:
#!/bin/sh
#test
[ -z $(pidof ngircd) ] && ngircd -p -f /tmp/flash/ngircd.conf
[ -z $(pidof bip) ] && /usr/bin/./bip -f /var/media/ftp/uStor01/mod/bip/bip.conf

in crontab steht folgendes drin
Code:
*/5 * * * * sh /var/media/ftp/uStor01/mod/test.sh

soweit geht das automatische ausführen auch, aber ngircd schreibt mir ins syslog
Code:
Apr 15 10:50:01 fritz local5.alert ngircd[32022]: Can't read configuration "/tmp/flash/ngircd.conf^M": No such file or directory

ich weiß jetzt nur ne warum der das "^M" mit dran hat.
Ich vermute mal der hat nen problem damit das unten drunter der 2. Befehl steht.

EDIT: hab grade die Lösung gefunden
Code:
#!/bin/sh
#test
[ -z $(pidof ngircd) ] && ngircd -p -f /tmp/flash/ngircd.conf [B]&[/B]
[ -z $(pidof bip) ] && /usr/bin/./bip -f /var/media/ftp/uStor01/mod/bip/bip.conf [B]&[/B]

Nochmal vielen Dank für die Hilfe
 
Zuletzt bearbeitet:
Das mit dem "&" habe ich mehrfach bei google gelesen darum habe ich dies benutzt.
Wie müsste es denn korrekterweise aussehen?
 
Zuletzt bearbeitet:
Ich habe auch schon mal "rm -rf /" gesehen. Das heißt nicht, daß man es ausprobieren soll, wenn man nicht weiß, was es tut.
Die Beschreibung von sh bzw. bash sagt Dir auch, was das "&" bedeutet.
Wie ich bereits geschrieben habe, liegt das Problem darin, daß Du die Datei unter Windows erstellt hast, mit einem Editor, der Windows Zeilenenden erstellt.
In Deinem Fall funktioniert es zwar mit dem & am Ende der Zeilen, aber es gibt auch Programme, die mit & am Ende jeder Zeile nicht funktionieren würden.
Die Windows-Zeilenenden sind übrigens vermutlich auch der Grund, warum Du in der crontab die Datei explizit mit "sh" aufrufen mußtest. (Falsche Zugriffsrechte könnten ein weiterer Grund sein.)
 
Ah vielen dank hab mir jetzt mit touch eine neue Datei erstellt und chmod 755 drauf gemacht dann die Inhalte mit rudi rein kopiert, das funktioniert wunderbar.

Danke für den Hinweis.
 
Linuxkurs hier im freetz-Unterforum? Ich dachte, simple Kenntnisse setzen wir voraus?
 
es lag übrigens denke ich wirklich daran, das ich es mit Windows gemacht habe weil chmod 755 hatte ich ja bereits erfolglos auf die test.sh angewendet, und da wollte er nicht wegen "not found"

Trotzdem danke für die Hilfe und ich habe wieder was dazu gelernt... :D
 
Wenn die Zugriffsrechte schon richtig gesetzt waren, lag es ganz sicher an den Zeilenenden. Es wird dann nämlich nach "/bin/sh^M" gesucht, ähnlich wie das ^M im Dateinamen oben zuviel war.
 
[...]
Kann man mit einer "*.sh" überprüfen lassen ob bestimmte Dienste/programme gerade laufen?

Und im Falle das sie nicht laufen (da Absturz, etc) sie einfach wieder starten?
[...]
Statt crontab kannst Du auch monitord verwenden. Siehe hier: klick
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.