PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skript zu Server Restart mittels Crontab ergibt Endlosschleife



alegria
09.02.09, 09:30
Hey!

Ich hab ein simples Skript, in etwa so:

#!/bin/bash
shutdown -r now
welches zweimal die Woche (crontab) laufen soll.

Dumm ist nur, dass nach dem Neustart das Skript nochmal ausgeführt wird, nach dem zweiten Neustart wieder usw.

Was mach ich falsch bzw. was muss ich ändern???
Woran liegt es das der Server das Skript bzw. den cronjob nicht beendet und den Restart immer wieder wiederholt???

Danke im Voraus...

cybershadow
09.02.09, 09:52
Wie ist denn die Ausgabe von crontab -l?

Oder hast Du den Task in cron.weekly eingetragen? Wenn ja, musst Du auf jeden Fall anacron deinstallieren, denn der kann genau das von Dir beschriebene Verhalten zeigen.

alegria
09.02.09, 10:01
Also crontab -l zeigt lediglich:

no crontab for root

Und ja, es ist ein weekday eintrag... Aber was genau ist denn anacron? Reicht es denn nicht den service zu deaktivieren beim booten bzw. den entsprechenden eintrag einfach rauszunehmen?

NACHTRAG: Ich hab kein anacron installiert...

GreenShadow
09.02.09, 10:02
Nur so aus interesse, warum startest du deinen Server zweimal die Woche neu?


Anacron (like `anac(h)ronistic') is a periodic command scheduler. It executes commands at intervals specified in days. Unlike cron, it does not assume that the system is running continuously. It can therefore be used to control the execution of daily, weekly and monthly jobs (or anything with a period of n days), on systems that don't run 24 hours a day. When installed and configured properly, Anacron will make sure that the commands are run at the specified intervals as closely as machine-uptime permits.

alegria
09.02.09, 10:09
Wie soeben rausgefunden und nachträglich ergänzt: ich hab kein anacron installiert!

Und warum ich das machen will ist ne lange Geschichte und meine letzte "Hoffnung" auf halbwegs konstanten betrieb bzw. meine endgültige "Kapitulation":
http://www.linuxforen.de/forums/showthread.php?p=1685399

Aber zurück zum Skript: Was kann ich tun???

pibi
09.02.09, 15:48
Ich hab ein simples Skript, in etwa so:"Etwa" so oder "genau" so? Poste doch bitte das ganze Script im Originalcode. Genau wie uebrigens auch den jeweiligen Eintrag im des crontab des jeweiligen Users ("crontab -l -u <user>"). Oder wo GENAU hast Du ihn eingetragen, wenn er hier im Listing nicht erscheint?

Denkbar ist zB. dass das Script zweimal ausgefuehrt wird, wenn der Shutdown und anschliessende Reboot innerhalb von weniger als 60 Sekunden erledigt sind. Was sagt das System-Logfile dazu (zB. /var/log/messages). Wird der Job mehrmals angestossen, oder liegt der Fehler woanders?

Und gestatte mir bitte ebenfalls die Frage: Warum um alles in der Welt willst Du die Kiste zweimal woechentlich neu booten? Ich habe meine zwei Server vor einer Woche nach einem knappen Jahr nonstop-Betrieb auch runtergefahren. Aber weil wir umgezogen sind;-) Bei dieser Gelegenheit aber ich auch gleich eine "Innenreinigung" mit der Druckluftpistole vorgenommen. War dringend noetig, "gemeiner Hausstaub" hatte sich bereits sehr im Inneren des Gehaeuses und in allen Luftschlitzen breitgemacht.

Gruss Pit.

/edit:
Sorry, habe erst jetzt den zitierten Beitrag von Dir gelesen. Hast Du den Speicher jetzt mal ausgetauscht, wie Dir geraten wurde? Anderer Ansatz: Boote mal eine CD-Linux-Distribution (Knoppix o.ae.) und schau, ob die Kiste ebenfalls haengenbleibt nach x Stunden Betrieb.

alegria
09.02.09, 19:35
Also das das mit dem reboot schon irgendwie umständlich ist mag ja sein - aber ich hab einfach null nerv mehr den hardwarefehler zu suchen!!! (werd das mit der livecd trotzdem mal testen... wobei mir nur suse einfällt... hab so nen uralt 14zoll röhrenmonitor der nicht überall (z.b. knoppix) richtig erkannt wird...)

Hier aber erstmal die Ausgaben...

Skript (status.sh):

#!/bin/sh
HOST='xyz.de'
USER='abc'
PASSWD='bla'
FILE='status.txt'
echo 'Letzter erfolgreicher Restart am:' > $FILE
date >> $FILE
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
/etc/init.d/nxserver stop
/etc/init.d/mysql stop
/etc/init.d/mpd stop
/etc/init.d/apache2 stop
shutdown -r 1


Jetzt /etc/crontab (nutze opensuse):

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
* 23 * * 0 root /home/abc/status.sh
* 7 * * 4 root /home/abc/status.sh

Interessanterweise erhalte ich für crontab -l -u abc bzw. crontab -l -u root beidemal:
no crontab for...

Ach und nein... Speicher hab ich nicht ausgetauscht. Da nach über 14h memtest nichts auffälliges war...

cybershadow
09.02.09, 19:54
* 23 * * 0 root /home/abc/status.sh
* 7 * * 4 root /home/abc/status.sh

... bedeutet "Führe das Skript jede Minute der 23. Stunde Sonntags und jede Minute der 7. Stunde Donnerstags aus." Ist das wirklich das, was Du bezweckst?

pibi
09.02.09, 21:26
Interessanterweise erhalte ich für crontab -l -u abc bzw. crontab -l -u root beidemal:
no crontab for...Logisch. Wieso schreibt eigentlich alle Welt die Crontabs immer in diejenigen, die von der Distribution bzw. vom System verwaltet werden und nicht in die dafuer vorgesehenen User-spezifischen?

Mache auf der Kommandozeile ein "crontab -e -u <username>" bzw. lasse das "-u <username>" weg, wenn Du bereits als dieser User angemeldet bist. Dann geht der Editor auf, Du tippst Deine Parameter ein (natuerlich ohne den 6. Parameter "Username"), speichern, fertig. Und als Bonbon erfolgt beim Speichern sogar ein Syntaxcheck auf korrekte Eingabe, jedenfalls bei der openSuSI.

Und der Mail meines Vor"schreibers" schliesse ich mich an. Sieh Dir nochmal die Parameter und deren Bedeutung an ("man 5 crontab").

Gruss Pit.

alegria
11.02.09, 07:56
@cybershadow:

Upps... Da hat ich doch die erste Spalte übersehen... :rolleyes:
Na zumindest klappt es jetzt und ich hab mich mit dem post hier als absoluter cron anfänger geoutet.... ;)
DANKE!

@pibi:
Danke für die Tipps. "Entschuldigend" muss ich aber sagen, dass eine /etc/crontab viel leichter aufzuspüren ist als diese Distrispezifischen Feinheiten. Und Abkürzungen à la crontab -l -u behalte ich nicht länger als 3 Tage in meinem kleinen Schädel... Also sieh mir nach das ich so dilettantisch ans Werk gegangen bin! ;)