Wie finde ich heraus, warum cron meine Jobs nicht ausführt?

14

Ich benutze Ubuntu 14.04 und der Cron-Daemon läuft:

# ps ax | grep cron
822 ?        Ss     0:00 cron

Es werden jedoch keine Jobs ausgeführt. Bisher habe ich Einträge in folgenden /var/log/syslogFormaten erhalten:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

aber jetzt gibt es keine cron-bezogenen einträge. Ich bekam auch Einträge wie diesen in /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

aber jetzt gibt es wieder keine cron-bezogenen einträge.

Mir ist nicht bewusst, dass sich etwas geändert hat. Ich habe versucht, cron neu zu starten:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Ich habe versucht crontab -e, einen Cron-Job hinzuzufügen, * * * * * date >> /tmp/somefileder funktioniert hat, aber es wurde eine neue Crontab in installiert /var/spool/cron/crontabs/root, während ich möchte, dass Cron die Datei in verwendet /etc/crontab.

Gibt es eine Debug-Option, die ich verwenden kann, oder ein Protokoll, das möglicherweise eine Fehlermeldung ausgibt, die ich untersuchen kann?

jl6
quelle
1
Was wird crontab -l angezeigt?
user345352353
no crontab for root.
jl6
Ich glaube, wenn Sie nur ein bisschen auf dieser SE-Site suchen, haben Sie eine Antwort. Dies ist ein ziemlich häufiges Problem.
mdpc
Mit dem crontabBefehl ( -lswitch) abgerufene Crons sind benutzerabhängig, während /etc/crontabsie zum Speichern systemweiter Crons verwendet werden. Aus diesem Grund werden Aufgaben, die in gespeichert /etc/crontabsind, nicht in denen von Personen angezeigt crontab -l.
John WH Smith
Beachten Sie, dass Server Fault eine kanonische Frage zum Cronjob-Debugging enthält , die möglicherweise hilfreich ist.
Wildcard

Antworten:

4

Um das Debuggen von Fehlern in Ihren cronJobs zu erleichtern, sollten Sie Ihre E-Mails überprüfen. Dies wird normalerweise in einer Datei wie /var/mail/<user_name>oder gespeichert /var/spool/mail/<user_name>.

Diese beiden Dateien sind tatsächlich Hardlinks auf meiner Debian-Box, aber ich weiß nicht, ob dies Standard ist.

Erläuterung

Von der cron(8)Seite:

Bei der Ausführung von Befehlen werden alle Ausgaben an den Eigentümer der crontab (oder an den in der Umgebungsvariablen MAILTO in der crontab angegebenen Benutzer, falls vorhanden) gesendet.

Joseph R.
quelle
Ich habe die Post überprüft. Es wird weder eine Datei generiert, noch ist eine dead.letter-Datei vorhanden.
jl6
0

Sie haben gezeigt, dass es für root keine crontab gibt. Haben Benutzer einen crontab-Eintrag? Wenn Sie nur root verwenden, können Sie auch die folgenden Verzeichnisse überprüfen: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

Auf meinem Rechner (Centos 6.4) habe ich mlocate.cron im Verzeichnis /etc/cron.daily/ und cron führt dieses Skript täglich aus.

Ich denke, Sie müssen nur Cron-Jobs hinzufügen.

Hudspeth
quelle
Aber es gibt eine Crontab-Datei in /etc/crontab. Vielleicht ist die Frage, warum es crontab -lnicht anerkennt?
jl6
0

Ich habe dieses Problem behoben, indem ich die Berechtigungen auf /etc/crontabFolgendes änderte :

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Zuvor war es -rw-rw-r--. Das war die einzige Änderung. Es hat nicht funktioniert, jetzt ist es. Ich weiß immer noch nicht warum.

jl6
quelle
1
Die root-crontab würde alle Befehle als root ausführen. Berechtigungen, die Schreibzugriff auf Nicht-Root-Benutzer ermöglichen, werden als Sicherheitslücke angesehen.
ChuckCottrill
@ChuckCottrill: Aber das Gruppenschreibbit hätte nur denen in der Stammgruppe Schreibzugriff gewährt - bei denen es sich vermutlich nur um Stammbenutzer handelt?
16.
0

Ich hatte auch eine ähnliche Art von Problem, aber nachdem ich den root-Benutzer auf der angegeben hatte /etc/crontab, wurde der Cron-Job ausgelöst.

Dies kann an der Syntax liegen, die in crontab -eder anderen als in der angegebenen Syntax verwendet wird /etc/crontab.

MohanBabu
quelle