Ich habe ein Bash-Skript foo.sh , das sich im Verzeichnis /etc/cron.daily , 700-chmoded, befindet. Es gehört root, crontab-Liste für den root-Benutzer unverändert (crontab -l) von der Debian-Kerninstallation. Ich habe cronjob anders als crontab -l und / oder crontab -e ausgeführt (zB habe ich den cron-Daemon nicht mit /etc/init.d/cron neu gestartet, wie im konkreten Debian-Fall empfohlen). Trotz einer Test-Job-Datei läuft unter ähnlichen Bedingungen. Das Skript wird debuggt und kann als eigenständige Aufgabe ausgeführt werden, ohne dass Fehler zurückgegeben werden. Ich habe auch Protokolle überprüft (/ var / log / syslog) und nichts falsch darin.
Aber : Dieser spezielle Job wird überhaupt nicht ausgeführt.
Hoppla! Ich denke, ich fand das "warum" oder zumindest das "wie":
Nur das Umbenennen des Auftragsdateinamens ohne die Erweiterung ".sh" hat dieses Problem behoben.
Ich dachte, es wäre ein Debian-Bug, aber es ist nicht so, wie in den anderen Antworten unten beschrieben.
LÖSUNG: Benennen Sie Ihr Skript um, indem Sie alle .
oder +
Zeichen aus dem Namen entfernen
Die Skripte von /etc/cron.daily werden von run-parts ausgeführt (siehe man 8 run-parts).
da gehst du mit einem snip von der manpage:
Wenn weder die Option --lbsysinit noch die Option --regex wird dann angegeben Namen müssen ausschließlich aus Oberteilen bestehen und Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche.
von / etc / crontab können Sie sehen, dass die täglichen Cron-Jobs mit:
ausgeführt werden %Vor%debian verwendet kein anacron und es gibt keine Option --lsbsinit, die für run-parts angegeben wurde (in diesem Fall wird '.' im Dateinamen des Cron-Skripts entsprechend den hierarchischen hierarchischen und reservierten Namespaces akzeptiert)
Um sicherzustellen, dass cron das Skript ausführt, können Sie immer run-parts ausführen und überprüfen, ob Ihr Skript in der run-parts-Ausgabe aufgelistet ist:
%Vor%oder
%Vor%Ich hoffe, mein Kommentar hilft Ihnen zu verstehen, was das eigentliche Problem war.
Alle zuvor gegebenen Antworten sind gut und akzeptabel für die Frage. Ich glaube jedoch, dass ich meinen Punkt hinzufügen sollte, um klarzustellen, dass Debian Linux OS Dateinamen von Cron-Jobs nicht unterstützt, die das Zeichen .
oder +
enthalten. Siehe den relevanten Abschnitt im Debian Policy Manual .
Das ist nur um Verwirrung zu vermeiden, dass es kein Fehler ist. So funktioniert Debian.