Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : cronjobs laufen nicht



ArPe
24.01.07, 13:27
Hallo,

ich habe den Verdacht daß meine Cronjobs nicht laufen.
Deshalb habe ich in /etc/crontab eine Testzeile zum Erzeugen der Datei testout geschrieben. Hier /etc/crontab erstellt als root:
--------------------------
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
#
*/05 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons
44 13 24 01 * touch /root/testi/testout
----------------------------
danach gebe ich "crontab /etc/crontab" ein.

Die Datei wird aber nicht um 13:44 erzeugt.

Meine bisherige Ursachenforschung:

"ps -x" bringt u.a. folgende Ausgabe:
5483 ? Ss 0:00 /usr/sbin/cron

/var/spool/cron/lastru/cron.daily und cron.weekly sind leer

/etc/init.d/cron start oder reload werden brav ausgeführt ändern aber nicht das Verhalten.

In /var/spool/mail/root finde ich den folgenden Beitrag, den ich mir so gar nicht erklären kann. Zwischen Zeitangabe und Befehlsaufruf gehört schließlich der User:
------------------------
From: root@Wanganui.site (Cron Daemon)
To: root@Wanganui.site
Subject: Cron <root@Wanganui> root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20070124132001.A934028D88@Wanganui.site>
Date: Wed, 24 Jan 2007 14:20:01 +0100 (CET)

/bin/sh: root: command not found
---------------------------------------

Ich arbeite mit Suse Linux 10.0 kernel version 2.6.13

Viele Grüße

baumgartner
24.01.07, 13:38
Der versucht da "root" als Kommando aufzurufen! so ganz verstehe ich nicht, was du mit deinen Befehlen bewirken möchtest, aber normalerweise bearbeitet man die Cronjobliste mit "crontab -e" und kann diese mit "-l" anziegen (list) lassen.

Poste doch mal "crontab -l"

ArPe
24.01.07, 14:06
Das sieht für mich genauso aus wie in meiner Ursprungsmail:

Wanganui:~ # crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/etc/crontab installed on Wed Jan 24 13:42:09 2007)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
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
#
*/05 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons
44 13 24 01 * touch /root/testi/testout
You have mail in /var/spool/mail/root

Gruß
ArPe

baumgartner
24.01.07, 14:32
Bitte gewöhne dir zur besseren Lesbarkeit die Verwendung von [ Quote ] Tags (engl ausgesprochen: täcks ) angwöhnen! Das verbessert ide Lesbarkeit ungemein!


*/05 * * * * root test -x /usr/lib/cron/run-crons && usr/lib/cron/run-crons
44 13 24 01 * touch /root/testi/testout
You have mail in /var/spool/mail/root


Also "root" ist definitiv kein Befehl, "test -x ..." schon.

"You have mail in /var/spool/mail/root" steht da ohne einem Kommentarzeichen # drinnen?

craano
24.01.07, 14:48
Also "root" ist definitiv kein Befehl, "test -x ..." schon.


Falls die systemweite Tabelle /etc/crontab verwendet wird, steht zwischen dow und command die Spalte user. Wenn man hier root einträgt, dann wird der Befehl auch mit Root - Rechten ausgeführt.

Mit crontab -e editiert man aber die Tabelle der Cron - Jobs des aufrufenden Users.

Also entweder die obige crontab - Zeile in /etc/crontab eintragen oder das "root" löschen. Du kannst den Cron - Job dennoch mit Root - Rechten ausführen, wenn du crontab -e als root aufrufst.

Grüße.
craano.

baumgartner
24.01.07, 14:51
So hab ich das schon gemeint craano!

Nur den Benutzer root in der crontab von root anzugeben ist ungültig. Arpe hat ja die Ausgabe von "crontab -l" gepostet.

craano
24.01.07, 14:55
Ich wollte das hier nur deutlich machen.

Wahrscheinlich hat ArPe crontab -e und die /etc/crontab beim Tutorial / Howto / Manpage studieren durcheinander gebracht.

Natürlich ist es sinnfrei in der crontab von root noch root mit anzugeben.

Grüße.
craano.

ArPe
24.01.07, 15:02
Schon klar das root kein Befehl ist. Zwischen der Zeitangabe und dem Befehl gehört bei Einträgen in der /etc/crontab die Userangabe. Bei root läuft es wahrscheinlich auch ohne.
Spannend ist warum cron den User als Befehl interpretiert. Sei es wie es sei, auch ohne den Eintrag des Users "root" läuft es nicht.
Erst mal kappse ich daran daß nicht mal der touch Befehl nicht ausgeführt wird. Den habe ich als simple Ursachenforschung in /etc/crontab eingebaut.

Seitenbenmerkung: "You have mail in /var/spool/mail/root" ist eine Systemmeldung die zufälligerweise gerade aufgeschlagen war und dann bei dem Kommando crontab -l miterschien. Die hat nichts mit dem Thema zu tun außer daß in der Mail die o.g. Fehlermeldung steht.

Nebenkriegsschauplatz: Wie erzeugt man denn die hübschen Zitatfenster. Ich kenne sonst nur die Zackendarstellung ">" bei Zitaten.

craano
24.01.07, 15:09
Schon klar das root kein Befehl ist. Zwischen der Zeitangabe und dem Befehl gehört bei Einträgen in der /etc/crontab die Userangabe.
Mit
crontab -eeditierst Du aber die crontab des users und eben nicht die /etc/crontab!

Die crontabs der user befinden sich laut Manpage:

Each user can have
their own crontab, and though these are files in
/var/spool/cron/crontabs,

Nur die /etc/crontab hat die spalte user!

Grüße.
craano.

baumgartner
24.01.07, 15:14
Spannend ist warum cron den User als Befehl interpretiert. Sei es wie es sei, auch ohne den Eintrag des Users "root" läuft es nicht.
Erst mal kappse ich daran daß nicht mal der touch Befehl nicht ausgeführt wird. Den habe ich als simple Ursachenforschung in /etc/crontab eingebaut.Läuft denn der "crond" (Cron Dämon?)

ArPe
24.01.07, 15:26
@craano
Ich habe nie mit crontab -e gearbeitet. Diese Idee stammt von baumgartner. Ich habe /etc/crontab direkt in einem Texeditor geöffnet und bearbeitet.

@baumgartner
Aus der Ausgabe des Befehls "ps -x":
> Zitatanfang:
>5483 ? Ss 0:00 /usr/sbin/cron
>Zitatende
schließe ich daß der Cron Daemon läuft.

craano
24.01.07, 15:34
Ja, cron läuft.

Ich bin nicht sicher, wenn Du die /etc/crontab direkt editierst und nicht crontab -e verwendest, ob crond davon etwas mitbekommt.

Nachdem Du die /etc/crontab geändert hast lade die Konfiguration einmal neu:


/etc/init.d/cron reload

Grüße.
craano.

ArPe
24.01.07, 15:40
@craano

/etc/init.d/cron reload
Hatte ich bereits probiert. Der touch-Befehl (s. 1. Beitrag zu diesem Thema) wurde trotzdem nicht ausgeführt.

baumgartner
24.01.07, 15:52
Ja, cron läuft.

Ich bin nicht sicher, wenn Du die /etc/crontab direkt editierst und nicht crontab -e verwendest, ob crond davon etwas mitbekommt.


Nein, dafür ist der crontab-Befehl ja auch da. Der normale User sollte nicht die rechte haben da groß an den Cronjobs mitzumischen ;)

Wenn der TE trotzdem noch immer die /etc/crontab direkt bearbeiten will, würde ich ihm mal empfehlen, die "man 5 crontab" zu lesen.

403
24.01.07, 15:54
Was sagt denn crontab -u root -l jetzt?

ArPe
24.01.07, 16:38
@403

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/etc/crontab installed on Wed Jan 24 13:42:09 2007)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
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
#
*/05 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons
44 13 24 01 * touch /root/testi/testout


@baumgartner
- es handelt sich wie bereits beschrieben um Ursachenforschung. Ich will herausfinden ob Einträge in der /etc/crontab überhaupt ausgeführt werden. Offensichtlich werden sie nicht. Dann muß ich mich auch nicht wundern daß die daily jobs nicht abgearbeitet werden. Diese werden nämlich ursächlich mit dem Befehl
*/05 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons gestartet. Es geht hier nicht darum die Cron-Konfiguration fürs Leben zu erstellen sondern herauszufinden woran es hakt.
- was bitte meinst Du mit "TE" ?

403
24.01.07, 16:49
TE - Thread Ersteller
mach mal root einfach raus.

Und achte auf die cron/syslog Meldungen.

ArPe
24.01.07, 17:57
Hallo,
Ich bekomme den touch befehl jetzt über /etc/crontab ausgeführt.

Lösung:
Nach der Änderung der /etc/crontab muß

1) crontab /etc/crontab
2) /etc/init.d/cron reload

(beide Befehle) abgesetzt werden.
Dann funzt zumindest dieser Aufruf. Hierüber kann ich auch jetzt statt einem Befehl ein Skript aufrufen.

Jetzt folgt der nächste Test-punkt: Ich habe das Skript das eine Datei erzeugt und über einen /etc/crontab Befehl ausgeführt werden kann nach /etc/cron.daily kopiert (und den Eintrag zum Aufruf dieses Skriptes natürlich aus der /etc/crontab wieder herausgenommen).
Morgen werde ich dann sehen ob es ausgeführt wurde.

Für heute ist erst mal Schluß. Ich gehe meine Finger an der Kletterwand trainieren.
Tschüß
ArPe