PDA

Bekijk de volledige versie : Cron sagt: MAIL (mailed 27 bytes of output but got status 0x0001)



akbor
22-06-2009, 21:09
Hi,

mir passiert in unregelmäßigen Abständen (ca. 1 Woche +/-...) dass sich mein Router aufhängt. Vermutlich bricht aus irgendeinem Grund die Swap-Partition weg, danach ist der Router nur noch per SSH ansprechbar, nimmt keine Kommandos mehr an, "routet" aber fleissig weiter. Man kommt also ins Internet, man merkt so einen Zustand nur daran, dass Transmission und Samba nicht laufen und dass (laut top) der Prozess init eine beinahe 100%ige CPU-Last verursacht. In diesem Zustand reagiert der Router komischerweise nicht an "reboot" oder "halt", mir bleibt leider nichts übrig, als den Stecker zu ziehen und das führt meistens zu einer längeren f2sck-Prüfung nach dem Wiedereinschalten.

Das war die Vorgeschichte. Die Geschichte ist, nach meiner Beobachtung hat sich der Router noch nie bereits nach wenigen Stunden oder bereits nach einem Tag in die Ecke gestellt. Also dachte ich, es mit folgendem Cronjob zu versuchen (automatischer Reboot jeden Tag um 3:00 Uhr):

0 3 * * * admin reboot
Das habe ich gestern Abend in die crontab geschrieben und heute den Syslog angeschaut:

Jun 22 01:50:00 ntp client: Synchronizing time with 2.de.pool.ntp.org ...
Jun 22 03:00:02 /opt/sbin/cron[268]: (admin) CMD (reboot )
Jun 22 03:00:03 /opt/sbin/cron[267]: (admin) MAIL (mailed 27 bytes of output but got status 0x0001 )
Jun 22 03:50:01 ntp client: Synchronizing time with 2.de.pool.ntp.org ...
Jun 22 05:50:03 ntp client: Synchronizing time with 2.de.pool.ntp.org ...
Das sieht merkwürdig aus. Erstens hat der Router keinen Reboot gemacht, sonst hätte die Systemuhr die Uhrzeit verloren und es wäre die komplette Bootsequenz im Log zu sehen. Zweitens was wollte Cron "Mailen"? Jemand eine Idee?

Gruß

Robert

wengi
23-06-2009, 08:49
Moin,

cron versucht immer das Ergebnis eines crontab-Eintrags zu mailen.
Genauer: Die Ausgabe des aufgerufenen Skripts wird per mail gesendet.

Wenn in der crontab (MAILTO="") nicht anders definiert wird das ganze an root@local gemailt.
Allerdings muss auch ein lokaler mail installiert sein....

Ich würde sagen entweder fehlt der MAILTO Eintrag oder Du hast eine Mailadresse eingetragen, ohne einen lokalen Mailserver.

All das hat allerdings nichts mit Deinem Problem zu tun.

Ich würde an Deiner Stelle mal einen cron eintragen, der mir regelmäßig free und df in die syslog schreibt.

wengi

akbor
23-06-2009, 09:59
Hallo Wengi,

da hast du recht - es hat mit meinem (Haupt-)Problem nichts zu tun. Ich habe natürlich keinen MAILTO-Eintrag gemacht und es ist mir egal, ob Chron seine Jobs mailen kann, oder nicht. Dann kann ich die Warnung "but got status 0x0001" ignorieren, Danke für die Info.

Dann werde ich mal versuchen, den Cron jede Sunde das Ergebnis von free oder df reporten zu lassen. Mal schauen, was ich im Syslog sehe. Grundsätzlich schien Cron zu funktionieren, ich habe bereits einen Job von Logrotate in der Crontab gehabt.

Gruß

Robert

akbor
23-06-2009, 17:36
EDIT:

Also etwas verstehe ich noch an Cron nicht...
0 * * * * admin free >> /tmp/syslog.log
0 * * * * admin df >> /tmp/syslog.logfunktioniert wunderbar, die Ausgabe wird stündlich an den Syslog angehängt, Cron möchte auch nichts mailen. Reboot scheint aber doch nicht zu funktionieren, gibt es da noch etwas zu beachten?

Dein Tipp mit df und free geht wahrscheinlich in die Richtung, dass man mitbekommt, ob und wann die Swap-Partition (oder die ganze HDD) weg knickt? Ich werde es jetzt beobachten. Aber warum klappt es mit reboot in der crontab nicht? :confused:

Gruß

Robert

wengi
24-06-2009, 12:00
Ich muss das bei mir mal testen...

wengi
25-06-2009, 08:46
Moin,

ich habe mal getestet:
[admin@blechbuechse root]$ cat /opt/etc/crontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
0 0 * * * admin /opt/sbin/logrotate -f /opt/etc/logrotate.conf &>/dev/null
30 9 * * * admin reboot
[admin@blechbuechse root]$
Und dann kam im syslog:
Jun 25 09:09:46 dropbear[184]: password auth succeeded for 'admin' from ::ffff:95.117.27.211:1494
Jun 25 09:23:01 /opt/sbin/cron[128]: (*system*) RELOAD (/opt/etc/crontab)
Jun 25 09:30:01 /opt/sbin/cron[236]: (admin) CMD (reboot)
Jun 25 09:30:03 rc.unslung: stop service /opt/etc/init.d/S90vsftp
Jun 25 09:30:04 rc.unslung: stop service /opt/etc/init.d/S90transmission-daemon
Jun 25 09:30:04 rc.unslung: stop service /opt/etc/init.d/S10cron
Jun 25 09:30:05 rc.unslung: stop service /opt/etc/init.d/S05syslogd
Jun 25 09:30:05 System log daemon exiting.
Jun 25 09:30:49 syslogd started: BusyBox v1.1.3
Jun 25 09:30:49 kernel: klogd started: BusyBox v1.1.3 (2008.02.25-18:27+0000)
Jun 25 09:30:49 kernel: CPU revision is: 00024000
Jun 25 09:30:49 kernel: Loading BCM4710 MMU routines.

Hat also anstandslos funktioniert.

wengi

akbor
25-06-2009, 12:30
Hmmm.... Danke für den Test! Ich habe in meiner crontab nur die Befehle. Keine Pfade zu den Binaries und keinen Pfad zu der Shell. Kann das vielleicht daran liegen, dass cron den Pfad zu reboot nicht findet und mir das mailen möchte? Aber reboot funktioniert ja aus der Kommandozeile, warum hat dan Cron ein Problem... Ich werde heute Abend probieren, meine crontab deiner ein wenig anzugleichen!

Gruß

Robert

wengi
25-06-2009, 13:37
Ich denke die Shell sollte auf jeden Fall drin stehen.
Versuche es doch einfach mal mit meiner crontab.
Dann weisst Du es.

wengi

akbor
25-06-2009, 14:56
Werd ich heute Abend machen. Ich muss mich mit den Experimenten, die einen Reboot erfordern, immer etwas zurück halten, weil meine Telefonanschlüsse komplett über den Router laufen.

Gruß

Robert

akbor
25-06-2009, 19:26
OK, Wengi, vielen Dank nochmal. Jetzt funktioniert alles, wie es soll. Keine Ahnung, ob es an den Umgebungsvariablen oder an MAILTO="" lag.

ich gehe jetzt mit folgendem Setup ins Rennen

0 3 * * 0,3 admin reboot
0 * * * * admin free >> /tmp/syslog.log
0 * * * * admin df >> /tmp/syslog.log
das heisst der Router wird zweimal die Woche (am So. und am Mi. jeweils um 3 Uhr nachts) neu gestartet. Ich denke mal, das schadet nicht. Und wenn in der Zwischenzeit was passiert, liefert mir vielleicht df oder free einen Hinweis auf die Ursache.

Wobei, die HDD bekommt jetzt 100 mA mehr durch ein Y-Kabel (habe die beiden USB-Ports angezapft). Habe im russischsprachigen Teil des Forums viele Hinweise auf ähnliche Probleme gefunden, die durch den Einsatz von einem externen Netzteil für die Platte behoben wurden. Möchte halt zusätzliche Netzteile vermeiden, wenn es geht, bei mir im TV-Rack sieht es schon ziemlich wild aus. Wahrscheinlich geht mir als nächstes das Netzteil meines Routers kaputt :D.

Gruß

Robert

Grabber66
14-04-2011, 18:40
Ich häng mich hier mal mit dran.
Ich hatte auch das Problem mit dem reboot, und musste feststellen, das es an einer nicht vorhandenen leerzeile am Ende hing.
Ist mir nur durch den cat Befehl aufgefallen. Falls noch jemand dieses Problem hat ;)