Ich habe ein paar Pfeile geworfen, um zu versuchen, dass ein Python-Skript von mir jede Minute ausgeführt wird. Also dachte ich, ich würde es vereinfachen, um einfach einmal pro Minute das "Einfachste, was funktionieren könnte" zu machen (ich starte debian / testing).
Ich habe eine einzeilige Datei erstellt in /etc/cron.d/perminute
:
* * * * * /bin/touch /home/me/ding_dong
Es gehört root und ist ausführbar (nicht sicher, ob dies eine Rolle spielt). Und dann habe ich getan:
sudo service cron reload
Und dann lehne dich zurück und starte ls -ltr
immer wieder in meinem Homeverzeichnis ( /home/me
). Aber meine ding_dong-Datei wird nie angezeigt. Ich weiß, wenn ich a tue sudo /bin/touch /home/me/ding_dong
, zeigt es sich sofort.
Offensichtlich fehlt hier etwas Dummes.
Antworten:
Wenn Sie eine Cron-Konfiguration in
/etc/cron.d/
oder in/etc/crontab
hinzufügen, müssen Sie den Benutzernamen hinzufügen, in dem der Befehl in Ihrem Beispiel ausgeführt werden soll* * * * * root /bin/touch /home/me/ding_dong
Und nur ein Hinweis von mir: Sie müssen nicht
ls -ltr
immer wieder loslegen. Verwendenwatch -n 5 "ls -ltr"
Sie einfach und der Befehl wird alle 5 Sekunden ausgeführt (oder jeder andere Wert, indem Sie 5 durch den gewünschten Wert ersetzen).quelle
man cron
etwas langsamer gelesen und denDEBIAN specific
Abschnitten besondere Aufmerksamkeit geschenkt hatte , bemerkte ich, dass die Dateien NICHT gruppen- oder beschreibbar sein dürfen. Was ich an einem Punkt in meiner Frustration aktiviert hatte.man cron
: Außerdem liest cron in Debian die Dateien im Verzeichnis /etc/cron.d. cron behandelt die Dateien in /etc/cron.d genauso wie die Datei / etc / crontab (sie folgen dem speziellen Format dieser Datei, dh sie enthalten das Benutzerfeld ). Sie sind jedoch unabhängig von / etc / crontab: Sie erben beispielsweise keine Einstellungen für Umgebungsvariablen. Diese Änderung ist Debian-spezifisch, siehe den Hinweis unter DEBIAN SPECIFIC unten.Um einen neuen
cron
Job zu erstellen , sollten Siecrontab -e
als der Benutzer ausgeführt werden, der den Job ausführen soll . Fügen Sie dann die entsprechende Zeile in das erscheinende Editorfenster ein:Die Art und Weise, wie Sie dies tun, erfordert ein anderes Format und ist sowieso keine gute Idee. Crontabs in
/etc/cron.d
haben ein etwas anderes Format. Sie benötigen einen Benutzernamen, unter dem sie ausgeführt werden. Zum Beispiel:Ein guter Trick (wie von @VogonPoetLaureate vorgeschlagen) besteht darin, den Standardfehler Ihrer Cron-Jobs zu erfassen, der beim Debuggen hilfreich sein kann. Zum Beispiel:
quelle
crontab -l
Auflisten aller Ihrer Cron-Jobs vorhanden ist.Ein möglicher Fehler ist hier, wie eine einzelne Zeilendatei erstellt wird. Aus der Ubuntu-Dokumentation :
Zum Beispiel funktioniert diese Art der Erstellung nicht:
quelle