Folgendes habe ich bei Debian Jessie getan:
- Installieren Sie cron über
apt-get install cron
- lege eine
backup_crontab
Datei ein/etc/cron.d/
Die Task wird jedoch nie ausgeführt.
Hier sind einige Ausgaben:
/# crontab -l
no crontab for root
/# cd /etc/cron.d && ls
backup_crontab
/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1
Gibt es etwas zu tun, um eine bestimmte crontab zu aktivieren, oder um den cron "service" an sich zu aktivieren?
ls /etc/cron.d
entsprichtcd /etc/cron.d && ls
in Bezug auf die Ausgabe. Der einzige Unterschied ist, dass sich das Arbeitsverzeichnis nicht ändert.Antworten:
In den
/etc/cron.d
benötigten Dateien muss auch der Benutzer aufgeführt sein , unter dem der Job ausgeführt werden soll.dh
Sie sollten auch sicherstellen, dass die Berechtigungen und der Eigentümer der Gruppe richtig festgelegt sind (
-rw-r--r--
und im Besitz von sindroot:root
).quelle
crontab -l
meldet cron-Einträge in/var/spool/cron/crontabs/
- dh die pro Benutzer crontabs./etc/cron.d
Dateien sind System-Crontabs und werden von nicht gemeldetcrontab -l
.root
in der Datei ist - habe es nurcrontab -l
nicht erwähnt, als Sie erklärten, warum - danke für Ihre Hilfeetc/cron.d
einer Datei einen Punkt in der Mitte des Namens hinzugefügt und der Auftrag wurde erst ausgeführt, nachdem ich ihn umbenannt hatteEine andere Sache, die ich beobachtet habe, ist, dass die Datei in
/etc/cron.d
keine Erweiterung haben kann. In meinem speziellen Fall hatte ich einen symbolischen Link:Dateinameneinschränkungen sind auf der ausführbaren Manpage dokumentiert: http://manpages.ubuntu.com/manpages/xenial/man8/run-parts.8.html . Sie können die Option --regex verwenden, um das Dateiformat zu überschreiben.
Das Standard-Cron-Verhalten blieb jedoch ohne Erweiterungen, siehe Kommentare unter: https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
quelle
Ich denke, Sie vermissen wahrscheinlich nur eine notwendige Leerzeile am Ende Ihrer Cron-Datei. Ich hatte das gleiche Problem, aber nachdem ich alle hier aufgeführten Punkte überprüft hatte (Benutzerberechtigungen, Dateiname, Cron-Version usw.), stellte ich fest, dass ich nach dem letzten Eintrag in meinem keinen Zeilenumbruch hatte
/etc/cron.d/own_cron
und dass die gesamte Datei ignoriert wurde.quelle
Wenn Sie der einzige Benutzer auf diesem Computer sind, möchten Sie möglicherweise nur verwenden
crontab -e
. Sie werden aufgefordert, einen Editor auszuwählen, wenn Sie den Befehl zum ersten Mal ausführen. Dann können Sie dies hinzufügen:Wenn Sie zu einem normalen Benutzerkonto wechseln, müssen Sie
sudo crontab -e
die Skripts konfigurieren, unter denen Sie die Ausführung planen möchtenroot
.crontab -l
Zeigt die aktuelle Crontab nur an, wenn Sie sie mit eingerichtet habencrontab -e
. Wenn Sie eine Cron-Datei in/etc/cron.d
/ haben, wird diese nicht mit angezeigtcrontab -l
.Sie müssen auch sicherstellen , dass Ihr Skript ausführbar mit:
chmod +x /backup.sh
.quelle
Dockerfile
also kann ich das nicht wirklichcrontab -e
- aber es ist trotzdem eine nützliche informationFür Cron aus * bian-Distributionen (wie Raspbian) müssen Sie den
-l
Parameter des Cron-Daemons aktivieren . Das ist empfehlenswert, wenn Sie die/etc/default/cron
Konfigurationsdatei verwenden und das aktivierenEXTRA_OPTS
.quelle
-l
Option für den Cron-Daemon einen erweiterten Satz von Dateinamen im/etc/cron.d
Verzeichnis. Wenn die Datei also unbemerkt ignoriert wird, weil sie einen Punkt enthält, können Sie entweder "-l" hinzufügen oder "dot entfernen". wird das Problem beheben.Überprüfen Sie Ihre Version von
cron
.Es scheint, dass Sie den Benutzer in einem
/etc/cron.d
Eintrag nicht benötigen, wenn Sie Dillons crond verwenden .Ich habe das herausgefunden, nachdem ich fast meine restlichen Haare herausgezogen hatte.
Ich habe eine Handvoll Einträge, die
/etc/cron.d
von verschiedenen Installationen eingespielt wurden. Nach einigen Nachforschungen stellte ich fest, dass einer von ihnen arbeitete. Es hatte den Benutzer nicht. Also habe ich den Benutzer aus den anderen herausgenommen. Und sie fingen an zu arbeiten.quelle