Oft crontab
werden Skripte nicht termingerecht ausgeführt oder wie erwartet. Dafür gibt es zahlreiche Gründe:
- falsche crontab Notation
- Berechtigungsproblem
- Umgebungsvariablen
In diesem Community-Wiki werden die Hauptgründe für die crontab
nicht erwartungsgemäße Ausführung von Skripten zusammengefasst. Schreiben Sie jeden Grund in eine separate Antwort.
Bitte geben Sie einen Grund pro Antwort an - Einzelheiten dazu, warum es nicht ausgeführt wird - und beheben Sie den / die Grund (e) für diesen einen Grund.
Bitte schreiben Sie nur Cron-spezifische Probleme, zB Befehle, die erwartungsgemäß von der Shell ausgeführt werden, aber von Cron fehlerhaft ausgeführt werden.
crontab -e
damit der Cron wirksam wird. Zum Beispiel mit vim bearbeite ich die Datei und verwende sie:w
zum Schreiben, aber der Job wird erst dann zu cron hinzugefügt, wenn ich ihn auch beende. Also werde ich den Job erst sehen, nachdem ich ihn:q
auch habe.Antworten:
Andere Umgebung
Cron übergibt einen minimalen Satz von Umgebungsvariablen an Ihre Jobs. Um den Unterschied zu sehen, fügen Sie einen Dummy-Job wie folgt hinzu:
Warten Sie,
/tmp/env.output
bis der Auftrag erstellt wurde, und entfernen Sie ihn dann erneut. Vergleichen Sie nun den Inhalt von/tmp/env.output
mit der Ausgabe vonenv
run in Ihrem regulären Terminal.Ein allgemeines "gotcha" hier ist die
PATH
Umgebungsvariable, die unterschiedlich ist. Vielleicht ist Ihr Cron - Skript verwendet den Befehlsomecommand
gefunden/opt/someApp/bin
, die Sie hinzugefügt habenPATH
in/etc/environment
? cron ignoriertPATH
diese Datei, daher schlägt das Ausführensomecommand
von Ihrem Skript fehl, wenn es mit cron ausgeführt wird, funktioniert jedoch, wenn es in einem Terminal ausgeführt wird. Es ist erwähnenswert, dass Variablen von/etc/environment
an Cron-Jobs weitergegeben werden, nur nicht die Variablen, die Cron selbst festlegt, wie zPATH
.Um das zu umgehen, setzen Sie einfach Ihre eigene
PATH
Variable oben im Skript. Z.BEinige bevorzugen es, stattdessen nur absolute Pfade zu allen Befehlen zu verwenden. Ich empfehle dagegen. Überlegen Sie, was passiert, wenn Sie Ihr Skript auf einem anderen System ausführen möchten und auf diesem System
/opt/someAppv2.2/bin
stattdessen der Befehl ausgeführt wird . Sie müßten durch das gesamte Skript gehen ersetzt/opt/someApp/bin
mit ,/opt/someAppv2.2/bin
anstatt nur einen kleinen bearbeiten auf der ersten Zeile des Skripts zu tun.Sie können auch die Variable PATH in der crontab-Datei festlegen, die für alle Cron-Jobs gilt. Z.B
quelle
env
ich hatte diesen Befehl völlig vergessen und dachte, PATH würde funktionieren. In meinem Fall war es tatsächlich ein bisschen anders.Meine Top-Nachricht: Wenn Sie vergessen haben, am Ende der
crontab
Datei eine neue Zeile einzufügen . Mit anderen Worten, die crontab-Datei sollte mit einer leeren Zeile enden.Unten finden Sie den entsprechenden Abschnitt in den Manpages für dieses Problem (fahren Sie
man crontab
dann mit dem Ende fort):quelle
man crontab
Ubuntu 10.10 heißt es "cron erfordert, dass jeder Eintrag in einer Crontab mit einem Zeilenumbruch endet. Wenn der letzte Eintrag in einer Crontab den Zeilenumbruch nicht enthält, betrachtet cron die Crontab als (zumindest teilweise) fehlerhaft und weigern, es zu installieren. " (Und das Datum am Ende ist der 19. April 2010.)crontab -e
wird die Syntax der Datei überprüft, bevor das Speichern zugelassen wird, einschließlich der Prüfung auf Zeilenumbruch.-e
Option ausgelöst und ist vom Editor unabhängig.Cron-Daemon läuft nicht. Ich habe es vor einigen Monaten wirklich vermasselt.
Art:
Wenn Sie keine Nummer sehen, läuft cron nicht.
sudo /etc/init.d/cron start
kann verwendet werden, um cron zu starten.BEARBEITEN: Anstatt Init-Skripte über /etc/init.d aufzurufen, verwenden Sie das Dienstprogramm, z
EDIT: Auch Sie könnten systemctl in modernen Linux verwenden, z
quelle
pidof cron
, dass Ergebnisse für andere Anwendungen weggelassen werden, die ebenfalls das Wort "cron" enthalten, z. B. crontab.sudo service cron start
bekomme ichstart: Job is already running: cron
service crond start
if its centos / RHELDas Skript Dateinamen in
cron.d/
,cron.daily/
,cron.hourly/
usw. sollten nicht enthalten Punkt (.
), sonst laufen Teile sie überspringen wird.Siehe Laufteile (8):
Also, wenn Sie einen cron - Skript
backup.sh
,analyze-logs.pl
incron.daily/
Verzeichnis, würden Sie am besten die Erweiterung Namen zu entfernen.quelle
run-parts --test
(oder eine andere imaginäre Option wie--debug
die Ausgabe der Dateien, dieIn vielen Umgebungen führt cron Befehle mit aus
sh
, während viele davon ausgehen, dass sie verwendet werdenbash
.Vorschläge zum Testen oder Beheben dieses Problems bei einem fehlerhaften Befehl:
Führen Sie den Befehl aus, um
sh
zu überprüfen, ob er funktioniert:Schließen Sie den Befehl in eine Bash-Subshell ein, um sicherzustellen, dass er in Bash ausgeführt wird:
Weisen Sie cron an, alle Befehle in bash auszuführen, indem Sie die Shell oben auf Ihrer crontab setzen:
Wenn der Befehl ein Skript ist, stellen Sie sicher, dass das Skript einen Shebang enthält:
quelle
bash
, aber nicht mitcron
. Vielen Dank!source
ist in der Bash, aber nicht in der Sh. Verwenden Sie in cron / sh einen Punkt:. envfile
anstattsource envfile
.sh "mycommand"
teiltsh
mit, mycommand als Skriptdatei auszuführen. Meinten Siesh -c "mycommand"
? In jedem Fall scheint es bei dieser Antwort darum zu gehen, dass der Befehl speziell in bash ausgeführt wird. Warum haben Sie den Befehlsh
hier hinzugefügt ?Ich hatte einige Probleme mit den Zeitzonen. Cron lief mit der Zeitzone für die Neuinstallation. Die Lösung war, cron neu zu starten:
quelle
* * * * * touch /tmp/cronworks
nichts getan, noch gibt esRELOAD
bei Cronlog.Für Skripte sollte der absolute Pfad verwendet werden:
Beispielsweise
/bin/grep
sollte anstelle vongrep
:Anstatt von:
Dies ist besonders schwierig, da derselbe Befehl funktioniert, wenn er über die Shell ausgeführt wird. Der Grund dafür ist, dass
cron
nicht dieselbePATH
Umgebungsvariable wie der Benutzer vorhanden ist.quelle
/usr/bin/whatever
PfadWenn Ihr crontab-Befehl ein
%
Symbol enthält, versucht cron, es zu interpretieren. Wenn Sie also einen Befehl mit einem%
darin enthaltenen Wert verwenden (z. B. eine Formatangabe für den Datumsbefehl), müssen Sie ihn maskieren.Das und andere gute Fallstricke hier:
http://www.pantz.org/software/cron/croninfo.html
quelle
date
innerhalb eines Cron-Tab-Jobs ausführen ?Cron ruft ein Skript auf, das nicht ausführbar ist.
Durch das Ausführen wird
chmod +x /path/to/scrip
das Skript ausführbar und sollte dieses Problem beheben.quelle
cron
und einfach nachzuvollziehen, indem Sie versuchen, es/path/to/script
über die Befehlszeile auszuführen .. scriptname
odersh scriptname
oder auszuführenbash scriptname
, wird dies zu einemcron
spezifischen Problem.Es ist auch möglich, dass das Passwort des Benutzers abgelaufen ist. Sogar das Passwort von root kann verfallen. Sie können
tail -f /var/log/cron.log
und Sie werden sehen, dass cron mit abgelaufenem Passwort fehlschlägt. Sie können das Passwort so einstellen, dass es niemals abläuft:passwd -x -1 <username>
In einigen Systemen (Debian, Ubuntu) ist die Protokollierung für cron standardmäßig nicht aktiviert. In /etc/rsyslog.conf oder /etc/rsyslog.d/50-default.conf die Zeile:
sollte bearbeitet werden (
sudo nano /etc/rsyslog.conf
) unkommentiert zu:Danach müssen Sie rsyslog über neu starten
oder
Quelle: Aktivieren Sie die Crontab-Protokollierung in Debian Linux
In einigen Systemen (Ubuntu) ist eine separate Protokolldatei für Cron nicht standardmäßig aktiviert, aber Cron-bezogene Protokolle werden in der Syslog-Datei angezeigt. Man darf verwenden
um cron-bezogene Nachrichten anzuzeigen.
quelle
Wenn Ihr Cronjob GUI-Apps aufruft, müssen Sie ihnen mitteilen, welches DISPLAY sie verwenden sollen.
Beispiel: Firefox-Start mit cron.
Ihr Skript sollte
export DISPLAY=:0
irgendwo enthalten .quelle
* * * * * export DISPLAY=:0 && <command>
Berechtigungsprobleme sind leider recht häufig.
Beachten Sie, dass eine häufige Problemumgehung darin besteht, alles mit der crontab von root auszuführen, was manchmal eine sehr schlechte Idee ist. Das Festlegen der richtigen Berechtigungen wird auf jeden Fall weitgehend übersehen.
quelle
Unsichere Berechtigung für Cron-Tabelle
Eine Cron-Tabelle wird abgelehnt, wenn ihre Berechtigung unsicher ist
Das Problem ist mit gelöst
quelle
Das Skript ist ortsabhängig. Dies hängt damit zusammen, dass in einem Skript immer absolute Pfade verwendet werden, ist aber nicht ganz dasselbe. Ihr Cron-Job muss möglicherweise
cd
vor der Ausführung in ein bestimmtes Verzeichnis, z. B. eine Rake-Aufgabe in einer Rails-Anwendung muss sich möglicherweise im Anwendungsstamm befinden, damit Rake die richtige Aufgabe findet, ganz zu schweigen von der entsprechenden Datenbankkonfiguration usw.Also ein crontab Eintrag von
23 3 * * * /usr/bin/rake db:session_purge RAILS_ENV=production
wäre besser als
Oder um den Crontab-Eintrag einfacher und weniger spröde zu halten:
23 3 * * * /home/<user>/scripts/session-purge.sh
mit dem folgenden Code in
/home/<user>/scripts/session-purge.sh
:quelle
chdir(dirname(__FILE__));
In der Vergangenheit funktionierende Crontab-Spezifikationen können beim Verschieben von einer Crontab-Datei in eine andere beschädigt werden . Manchmal liegt der Grund darin, dass Sie die Spezifikation von einer System-Crontab-Datei in eine Benutzer-Crontab-Datei verschoben haben oder umgekehrt.
Das Format der Cron-Jobspezifikation unterscheidet sich zwischen den Crontab-Dateien der Benutzer (/ var / spool / cron / benutzername oder / var / spool / cron / crontabs / benutzername) und den Crontabs des Systems (
/etc/crontab
und den Dateien in/etc/cron.d
).Die System-Crontabs haben direkt vor dem auszuführenden Befehl ein zusätzliches Feld "Benutzer".
Dies führt zu Fehlern, beispielsweise
george; command not found
beim Verschieben eines Befehls aus/etc/crontab
einer Datei in/etc/cron.d
die Crontab-Datei eines Benutzers.Umgekehrt liefert cron im umgekehrten Fall ähnliche
/usr/bin/restartxyz is not a valid username
oder ähnliche Fehler .quelle
cron script ruft einen Befehl mit der Option --verbose auf
Bei mir ist ein Cron-Skript fehlgeschlagen, weil ich beim Schreiben des Skripts im Autopiloten war und die Option --verbose eingefügt habe:
Das Skript lief einwandfrei, wenn es von der Shell aus ausgeführt wurde, schlug jedoch fehl, wenn es von crontab aus ausgeführt wurde, da die ausführliche Ausgabe von der Shell aus auf stdout gesetzt wird, von crontab jedoch nirgendwo. Einfache Lösung zum Entfernen des 'v':
quelle
Der häufigste Grund, warum ich gesehen habe, dass cron in einem falsch angegebenen Zeitplan versagt. Es ist üblich,
15 23 * * *
anstelle von* * 11 15 *
oder einen Job anzugeben, der für 23:15 Uhr geplant ist11 15 * * *
. Wochentag für Jobs nach Mitternacht wird auch verwirrt MF ist2-6
nach Mitternacht nicht1-5
. Bestimmte Daten sind in der Regel ein Problem, da wir sie nur selten verwenden und* * 3 1 *
nicht am 3. März. Wenn Sie sich nicht sicher sind, überprüfen Sie Ihre Cron-Zeitpläne online unter https://crontab.guru/ .Wenn Sie mit verschiedenen Plattformen arbeiten und nicht unterstützte Optionen verwenden, z. B.
2/3
Zeitangaben, kann dies ebenfalls zu Fehlern führen. Dies ist eine sehr nützliche Option, die jedoch nicht allgemein verfügbar ist. Ich bin auch auf Probleme mit Listen wie1-5
oder gestoßen1,3,5
.Die Verwendung nicht qualifizierter Pfade hat ebenfalls Probleme verursacht. Der Standardpfad ist normalerweise
/bin:/usr/bin
so, dass nur Standardbefehle ausgeführt werden. Diese Verzeichnisse haben normalerweise nicht den gewünschten Befehl. Dies betrifft auch Skripte, die nicht standardmäßige Befehle verwenden. Andere Umgebungsvariablen können ebenfalls fehlen.Das Klopfen einer vorhandenen Crontab hat mir Probleme bereitet. Ich lade jetzt von einer Dateikopie. Dies kann aus der vorhandenen Crontab mit wiederhergestellt werden,
crontab -l
wenn es verstopft wird. Ich behalte die Kopie von crontab in ~ / bin. Es ist durchgehend kommentiert und endet mit der Zeile# EOF
. Dies wird täglich von einem Crontab-Eintrag wie folgt nachgeladen:Der obige Befehl reload basiert auf einer ausführbaren crontab mit einem Bang-Pfad, auf dem crontab ausgeführt wird. Einige Systeme erfordern die Ausführung von crontab im Befehl und die Angabe der Datei. Wenn das Verzeichnis über ein Netzwerk freigegeben ist, verwende ich häufig
crontab.$(hostname)
den Namen der Datei. Dies korrigiert schließlich Fälle, in denen die falsche Crontab auf dem falschen Server geladen ist.Durch die Verwendung der Datei wird eine Sicherungskopie der Crontab erstellt, und temporäre Änderungen (die einzige Zeit, die ich verwende
crontab -e
) können automatisch zurückgesetzt werden. Es stehen Header zur Verfügung, mit deren Hilfe die Planungsparameter richtig eingestellt werden können. Ich habe sie hinzugefügt, wenn unerfahrene Benutzer eine Crontab bearbeiten würden.In seltenen Fällen stoße ich auf Befehle, die Benutzereingaben erfordern. Diese schlagen unter crontab fehl, obwohl einige mit der Eingabeumleitung funktionieren.
quelle
30 23 * * *
Übersetzung auf 23:15 Uhr auswirkt?15 23 * * *
. Korrigiert jetzt.Wenn Sie über SSH-Schlüssel auf ein Konto zugreifen, ist es möglich, sich bei dem Konto anzumelden, ohne jedoch zu bemerken, dass das Kennwort für das Konto gesperrt ist (z. B. aufgrund abgelaufener oder ungültiger Kennwortversuche).
Wenn das System PAM verwendet und das Konto gesperrt ist, kann dies dazu führen, dass der Cronjob nicht mehr ausgeführt wird. (Ich habe dies unter Solaris getestet, aber nicht unter Ubuntu)
Sie können Nachrichten wie diese in / var / adm / messages finden:
Alles, was Sie tun müssen, ist auszuführen:
als root zum entsperren des kontos und die crontab sollte wieder funktionieren.
quelle
Wenn Sie einen Befehl wie diesen haben:
und es funktioniert nicht und Sie können keine Ausgabe sehen, es muss nicht unbedingt bedeuten, dass cron nicht funktioniert. Das Skript könnte kaputt sein und die Ausgabe nach stderr gehen, was nicht an / tmp / output übergeben wird. Überprüfen Sie, ob dies nicht der Fall ist, indem Sie auch diese Ausgabe erfassen:
um zu sehen, ob dies Ihnen hilft, Ihr Problem zu erkennen.
quelle
=== Docker-Warnung ===
Wenn Sie Docker verwenden,
Ich denke, es ist richtig hinzuzufügen, dass ich es nicht geschafft habe, cron im Hintergrund laufen zu lassen.
Um einen Cron-Job innerhalb des Containers auszuführen, habe ich Supervisor verwendet und
cron -f
zusammen mit dem anderen Prozess ausgeführt.Bearbeiten: Ein weiteres Problem - Ich habe es auch nicht geschafft, es zum Laufen zu bringen, wenn der Container mit HOST-Netzwerk ausgeführt wurde. Siehe dieses Problem auch hier: https://github.com/phusion/baseimage-docker/issues/144
quelle
Ich habe ein Installationsshell-Skript geschrieben, das ein weiteres Skript zum Löschen alter Transaktionsdaten aus einer Datenbank erstellt. Als Teil der Aufgabe musste der tägliche
cron
Job so konfiguriert werden , dass er zu einer beliebigen Zeit ausgeführt wurde, wenn die Datenbanklast niedrig war.Ich habe eine Datei
mycronjob
mit dem Cron-Zeitplan, dem Benutzernamen und dem Befehl erstellt und in das/etc/cron.d
Verzeichnis kopiert . Meine zwei Fallstricke:mycronjob
Die Datei musste root gehören, um ausgeführt zu werdenEin Berechtigungsproblem wird in etwa
/var/log/syslog
wie folgt angezeigt :Die erste Zeile bezieht sich auf eine
/etc/crontab
Datei und die spätere auf eine Datei, unter die ich gestellt habe/etc/cront.d
.quelle
Zeile in einer Weise geschrieben crontab versteht nicht. Es muss richtig geschrieben sein. Hier ist CrontabHowTo .
quelle
Cron-Daemon läuft möglicherweise, funktioniert aber nicht. Versuche cron neu zu starten:
quelle
pidof
cron ausprobiert und nichts bekommen. Versucht mitservice
Dienstprogramm und es sagte, dass Cron bereits ausgeführt wurde. Führen Sie einfach diesen Befehl aus und führen Sie ihnpidof
erneut aus, und ich erhalte ein Ergebnis.Schreiben an cron über "crontab -e" mit dem username-Argument in einer Zeile. Ich habe Beispiele von Benutzern (oder Sysadmins) gesehen, die ihre Shell-Skripte geschrieben haben und nicht verstanden haben, warum sie nicht automatisieren. Das Argument "user" befindet sich in / etc / crontab, nicht jedoch in den benutzerdefinierten Dateien. Ihre persönliche Datei würde zum Beispiel so aussehen:
während / etc / crontab wäre:
Warum sollten Sie letzteres tun? Nun, je nachdem, wie Sie Ihre Berechtigungen festlegen möchten, kann dies sehr verworren sein. Ich habe Skripte geschrieben, um Aufgaben für Benutzer zu automatisieren, die die Feinheiten nicht verstehen oder sich nicht um die Plackerei kümmern möchten. Durch Setzen von Berechtigungen auf
--x------
kann ich das Skript ausführbar machen, ohne dass sie es lesen (und möglicherweise versehentlich ändern) können. Möglicherweise möchte ich diesen Befehl jedoch mit mehreren anderen aus einer Datei ausführen (um die Wartung zu vereinfachen), aber sicherstellen, dass der Dateiausgabe der richtige Eigentümer zugewiesen ist. Wenn Sie dies tun (zumindest in Ubuntu 10.10), wird sowohl die Unfähigkeit, die Datei zu lesen als auch auszuführen, sowie das oben erwähnte Problem mit den Ablageperioden in / etc / crontab beeinträchtigt (was witzigerweise keinen Fehler beim Durchlaufen verursachtcrontab -e
). .Als Beispiel habe ich Instanzen von gesehen,
sudo crontab -e
die zum Ausführen eines Skripts mit Root-Berechtigungen verwendet wurden, mit einem entsprechendenchown username file_output
Skript im Shell-Skript. Schlampig, aber es funktioniert. IMHO, die anmutigere Option ist es, sie/etc/crontab
mit dem angegebenen Benutzernamen und den entsprechenden Berechtigungenfile_output
einzugeben.quelle
Aufbauend auf dem, was Aaron Peart über den ausführlichen Modus erwähnt hat, werden Skripts, die sich nicht im ausführlichen Modus befinden, manchmal initialisiert, aber nicht beendet, wenn das Standardverhalten eines eingeschlossenen Befehls darin besteht, eine Zeile oder mehr auf dem Bildschirm auszugeben, sobald der Prozess gestartet wird. Zum Beispiel habe ich ein Backup-Skript für unser Intranet geschrieben, das curl verwendet, ein Dienstprogramm, das Dateien auf Remote-Server herunterlädt oder hochlädt. Es ist sehr praktisch, wenn Sie nur über HTTP auf diese Remote-Dateien zugreifen können. Die Verwendung von "curl http://something.com/somefile.xls " führte dazu, dass ein Skript, das ich geschrieben habe, hängen blieb und nie abgeschlossen wurde, weil eine neue Zeile gefolgt von einer Fortschrittszeile ausgegeben wurde. Ich musste das stille Flag (-s) verwenden, um es anzuweisen, keine Informationen auszugeben, und in meinen eigenen Code schreiben, um damit umzugehen, wenn die Datei nicht heruntergeladen werden konnte.
quelle
/dev/null
. Beispiel:some-command > /dev/null
Dies leitet nur die Standardausgabe und nicht die Fehlerausgabe um (was normalerweise gewünscht wird, da Sie über Fehler informiert werden möchten). Um auch die Fehlerausgabe umzuleiten, verwenden Siesome-command &> /dev/null
.Obwohl Sie Umgebungsvariablen in Ihrer crontable definieren können, befinden Sie sich nicht in einem Shell-Skript. Konstruktionen wie die folgenden funktionieren also nicht:
Dies ist darauf zurückzuführen, dass Variablen in der crontable nicht interpretiert werden: Alle Werte werden wörtlich genommen. Und das ist auch so, wenn Sie die Klammern weglassen. Ihre Befehle werden also nicht ausgeführt und Ihre Protokolldateien werden nicht geschrieben ...
Stattdessen müssen Sie alle Umgebungsvariablen direkt definieren:
quelle
Wenn eine Aufgabe innerhalb von cron ausgeführt wird, wird stdin geschlossen. Programme, die je nach Verfügbarkeit von stdin unterschiedlich arbeiten, verhalten sich in der Shell-Sitzung und in cron unterschiedlich.
Ein Beispiel ist das Programm
goaccess
zum Analysieren von Webserver-Protokolldateien. Dies funktioniert NICHT in Cron:und
goaccess
zeigt die Hilfeseite an, anstatt den Bericht zu erstellen. In der Shell kann dies mit reproduziert werdenDas Update für
goaccess
besteht darin, das Protokoll von stdin zu lesen, anstatt aus der Datei zu lesen. Die Lösung besteht darin, den Eintrag crontab in zu ändernquelle
In meinem Fall hatten cron und crontab unterschiedliche Besitzer.
NICHT funktionierend hatte ich das:
Grundsätzlich musste ich cron-config ausführen und die Fragen richtig beantworten. Es gab einen Punkt, an dem ich mein Win7-Benutzerkennwort für mein Benutzerkonto eingeben musste. Nach meiner Lektüre scheint dies ein potenzielles Sicherheitsproblem zu sein, aber ich bin der einzige Administrator in einem einzelnen Heimnetzwerk und habe mich daher für OK entschieden.
Hier ist die Befehlssequenz, die mich zum Laufen gebracht hat:
quelle
Auf meinen RHEL7-Servern würden Root-Cron-Jobs ausgeführt, Benutzerjobs jedoch nicht. Ich habe festgestellt, dass die Jobs ohne Basisverzeichnis nicht ausgeführt werden können (es werden jedoch gute Fehler in / var / log / cron angezeigt). Als ich das Home-Verzeichnis erstellt habe, wurde das Problem behoben.
quelle
Wenn Sie Ihre crontab-Datei mit einem Windows-Editor (über Samba oder etwas anderes) bearbeitet haben und die Zeilenumbrüche durch \ n \ r oder nur \ r ersetzt wurden, wird cron nicht ausgeführt.
Wenn Sie /etc/cron.d/* verwenden und eine dieser Dateien ein \ r enthält, durchläuft cron die Dateien und stoppt, wenn eine fehlerhafte Datei gefunden wird. Nicht sicher, ob das das Problem ist?
Verwenden:
quelle