Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Totta123
- Beiträge: 77
- Registriert: 09.10.2002 20:07:02
Beitrag
von Totta123 » 10.02.2011 12:50:12
Hi, ich nutze folgendes script zur Überwachung eines prozesses:
Code: Alles auswählen
#!/bin/sh
count=$(ps aux | grep -v grep | grep -c fluxx.x86)
if [ "$count" -lt 1 ]; # Programm fluxx.x86 laeuft nicht
then
echo "`date` fluxx laeuft nicht" >> /em/log/fluxx_check.log
pkill fluxx.x86
echo "`date` fluxx wurde beendet" >> /em/log/fluxx_check.log
sleep 10
/em/fluxx/fluxx.x86
echo "`date` fluxx wurde neu Gestartet" >> /em/log/fluxx_check.log
echo "---------------------------------------------------------" >>
/em/log/fluxx_check.log
fi
exit 0
Wenn ich nun zum test den Prozess fluxx.x86 mit pkill beende. Dann das Script ausführe, wird auch alles wunderbar ins log geschrieben, aber der Befehl "/em/fluxx/fluxx.x86" wird nicht ausgeführt zumindest gibt es keinen neuen Prozess wenn ich mit ps x nachschaue.
Führe ich den Befehl "/em/fluxx/fluxx.x86" aber manuell auf der command line aus startet der Prozess und fluxx läuft auch wieder...
Ich finde den Fehler einfach nicht. Jemand eine Idee oder Tip oder anderes Script?
Gruss
totta
-
gbotti
- Beiträge: 846
- Registriert: 16.07.2010 14:24:43
- Wohnort: München
Beitrag
von gbotti » 10.02.2011 13:10:10
Wie wird denn dieses Script aufgerufen?
Cron???
Hat der Benutzer, der das Script aufruft überhaupt die entsprechenden Rechte?
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft
-
Totta123
- Beiträge: 77
- Registriert: 09.10.2002 20:07:02
Beitrag
von Totta123 » 10.02.2011 14:17:29
also das script rufe ich per crontab auf:
* 5 * * * /em/script/fluxx_check.sh
Der User root ist der owner und die berechtigungen sind 755.
Mach ich was falsch ?
-
gbotti
- Beiträge: 846
- Registriert: 16.07.2010 14:24:43
- Wohnort: München
Beitrag
von gbotti » 10.02.2011 15:15:10
Naja. Das Script wäre schon "Ausbaufähig", aber funktionieren sollte es so schon.
Eventuell solltest Du mal nachsehen, welche Meldungen vom Cron auflaufen.
Die Nachrichten werden als Mail an root gesandt. Ich lass mir die immer auf mein Konto weiterleiten...
Wenn Du keine Mailweiterleitung eingerichtet hast ist es am einfachsten mit
mutt die Mails abzurufen.
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft
-
rendegast
- Beiträge: 15041
- Registriert: 27.02.2006 16:50:33
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von rendegast » 10.02.2011 15:19:38
Vorschläge zur Vereinfachung:
Code: Alles auswählen
count=$(ps aux | grep -v grep | grep -c fluxx.x86)
if [ "$count" -lt 1 ]; # Programm fluxx.x86 laeuft nicht
then
ersetzen durch
Code: Alles auswählen
...
/em/fluxx/fluxx.x86
echo "`date` fluxx wurde neu Gestartet" >> /em/log/fluxx_check.log
echo "---------------------------------------------------------" >>
/em/log/fluxx_check.log
ändern in
Code: Alles auswählen
...
/em/fluxx/fluxx.x86
echo "$(date) fluxx wurde neu Gestartet
---------------------------------------------------------
" >> /em/log/fluxx_ch
resp.
Code: Alles auswählen
...
/em/fluxx/fluxx.x86 && echo "$(date) fluxx wurde neu Gestartet
---------------------------------------------------------
" >> /em/log/fluxx_ch
Zum Nichtausführen von /em/fluxx/fluxx.x86 durch cron, mal beobachten:
Code: Alles auswählen
/em/fluxx/fluxx.x86
->
strace -o /tmp/LOG -f /em/fluxx/fluxx.x86
Ich tippe da auch auf Pfade, die für den angemeldeten root gelten, nicht aber bei Ausführung durch cron.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-
Totta123
- Beiträge: 77
- Registriert: 09.10.2002 20:07:02
Beitrag
von Totta123 » 10.02.2011 15:42:41
Soll das script dann so aussehen ?
Code: Alles auswählen
#!/bin/sh
pidof fluxx.x86 ||
pkill fluxx.x86
echo "`date` fluxx wurde beendet" >> /em/log/fluxx_check.log
sleep 10
/em/fluxx/fluxx.x86 && echo "$(date) fluxx wurde neu Gestartet
---------------------------------------------------------
" >> /em/log/fluxx_check.log
fi
exit 0
-
rendegast
- Beiträge: 15041
- Registriert: 27.02.2006 16:50:33
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von rendegast » 10.02.2011 15:58:41
Eher so:
Code: Alles auswählen
#!/bin/sh
pidof fluxx.x86 || {
#pkill fluxx.x86
#echo "`date` fluxx wurde beendet" >> /em/log/fluxx_check.log
#sleep 10
/em/fluxx/fluxx.x86 && echo "$(date) fluxx wurde neu Gestartet
---------------------------------------------------------
" >> /em/log/fluxx_check.log
}
exit 0
Wenn flux.x86 nach 'pidof' nicht läuft, muß es ja eigentlich auch nicht mehr gekillt werden.
Eventuell wären aber Aufräumarbeiten dort nötig, zBsp. lock-Dateien entfernen usw.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-
Totta123
- Beiträge: 77
- Registriert: 09.10.2002 20:07:02
Beitrag
von Totta123 » 10.02.2011 16:15:04
hmmm jetzt gehts, aber der grund ist mir nicht ganz klar, da die Sache die ich geändert hab eigentlich nichts damit zu tun hat. Ich hab im Crontab die Zeitangabe von " 5 * * * *" auf "*/5 * * * * *" geändert.
Wenn ich nun den Prozess kill, 5min warte, dann wird der Prozess wieder gestartet..... komisch komisch...
Danke trotzdem für die Hilfe, ich werde das Script dann mal anpassen.
-
gbotti
- Beiträge: 846
- Registriert: 16.07.2010 14:24:43
- Wohnort: München
Beitrag
von gbotti » 11.02.2011 12:53:12
Ääähm...
5 * * * * würde schon auch gehen. Dann wird das Script aber jede Stunde zur 5. Minute (also 12:05, 13:05, 14:05,...) ausgeführt.
*/5 sagt aus, dass es alle 5 (in deinem Fall) Minuten ausgeführt werden soll...
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft