automatisches überprüfen und starten eines programmes

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
m4dd0g
Beiträge: 3
Registriert: 16.06.2004 10:35:02

automatisches überprüfen und starten eines programmes

Beitrag von m4dd0g » 16.06.2004 10:44:34

hi,
ich versuche über folgenden befehl das vorhandensein eines prozesses zu überprüfen und wenn festgestellt wird, das der nicht läuft, dieser wieder angestartet wird

Code: Alles auswählen

*/10 * * * * if ! test `ps acx | grep ucc-bin | grep -v grep | cut -c0-6` ; then /home/ehd/ut2004/System/ucc-bin server ONS-Torlan?game=Onslaught.ONSOnslaughtGame ini=UT2004.ini -nohomedir & > /dev/null ; fi
wenn ich mit "crontab -e" dies eintrage und speichere, dann erscheint folgende fm:

crontab: installing new crontab
"/tmp/crontab.XXXXKHJOZI":3: bad hour
errors in crontab file, can´t install.
do you want to retry the same edit


kann mir jemand sagen wo mein fehler ist :?:

Benutzeravatar
gerry
Beiträge: 14
Registriert: 04.06.2004 10:54:46

Beitrag von gerry » 16.06.2004 14:21:48

der slash vor der "10" ist IMHO falsch - lass den mal weg!

Ausserdem würde ich nicht den ganzen Befehl als solches in die Crontab schreiben sondern nur ein script (muss executable-recht haben!), welches dann wiederum die Befehle enthält. Vergiss nicht, dass du bei cronjobs immer den absoluten Pfad zu den Befehlen angeben sollst!

schau mal unter http://www.pro-support.de/crontab.shtml

gerry
-------------------------------------------------------------------
A trainstation is a station where the train stops. But what the hell is a workstation?

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 17.06.2004 08:37:51

gerry hat geschrieben:der slash vor der "10" ist IMHO falsch - lass den mal weg!
Nein, der Slash ist nicht falsch, siehe man page von crontab:

Code: Alles auswählen

       Step  values can be used in conjunction with ranges.  Following a range
       with ``/<number>'' specifies skips of the number's  value  through  the
       range.  For example, ``0-23/2'' can be used in the hours field to spec-
       ify command execution every other hour (the alternative in the V7 stan-
       dard  is ``0,2,4,6,8,10,12,14,16,18,20,22'').  Steps are also permitted
       after an asterisk, so if you want to say ``every two hours'', just  use
       ``*/2''.
cron scheint ja wegen Zeile 3 rumzumeckern, ich nehme mal an, Du hast da irgendwo ein Carriage-Return zw. Zeile 2 und 3 drin und somit nicht mehr alles in einer Zeile. Ansonsten wirklich diesen langen Befehl in ein Shell-Script packen und dann dieses vom cron starten.

Gruss, mistersixt.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 19.06.2004 12:28:09

Hi,

so aus der Erinnerung haette ich einen anderen Vorschlag, benutzt habe ich's allerdings noch nie. Man kann Programme mit Tool

Code: Alles auswählen

nohup
starten, vielleicht ist das ja die Loesung fuer dein Problem.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 19.06.2004 15:10:20

Ich glaube nicht, dass du einen Bash-Befehl in die Crontab schreiben kannst. Mache es, wie gerry vorgeschlagen hat. Schreibe die Befehle in eine Skript-Datei

Code: Alles auswählen

#!/bin/bash
if ....
Die Fehlermeldung lässt mich außerdem vermuten, dass du nicht alles in einer einzigen Zeile geschrieben hast.

Antworten