Warum nicht mein Cron.d pro Minute Job laufen?
Ich habe ein paar Pfeile geworfen und versucht, ein Python-Skript von mir jede Minute auszuführen. Also dachte ich, ich würde es vereinfachen, nur einmal pro Minute die "einfachste Sache zu tun, die möglicherweise funktionieren könnte" (ich führe Debian/testing aus).
Ich habe eine einzeilige Datei in /etc/cron.d/perminute
erstellt:
* * * * * /bin/touch /home/me/ding_dong
Es gehört root und ist ausführbar (nicht sicher, ob eines davon wichtig ist). Und dann tat ich:
sudo service cron reload
Und dann lehn dich zurück und fange an zu laufen ls -ltr
immer wieder in meinem home-Verzeichnis (/home/me
). Aber meine ding_dong-Datei wird nie angezeigt. Ich weiß, wenn ich ein sudo /bin/touch /home/me/ding_dong
mache, wird es sofort angezeigt.
Offensichtlich fehlt hier etwas Dummes.
3 answers
Wenn Sie eine Cron-Konfiguration in /etc/cron.d/
oder in /etc/crontab
hinzufügen, müssen Sie in Ihrem Beispiel den Benutzernamen hinzufügen, in welchem Kontext der Befehl ausgeführt werden soll
* * * * * root /bin/touch /home/me/ding_dong
Und nur ein Hinweis von mir: Sie müssen ls -ltr
nicht immer wieder ausführen, sondern nur watch -n 5 "ls -ltr"
und es wird der Befehl alle 5 Sekunden ausgeführt (oder ein anderer Wert durch Ersetzen von 5 durch das, was Sie wollen).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-09-02 06:20:35
Um einen neuen cron
- Job zu erstellen, sollten Sie crontab -e
als Benutzer ausführen, den Sie ausführen möchten. Fügen Sie dann die entsprechende Zeile im angezeigten Editorfenster hinzu:
* * * * * /bin/touch /home/me/ding_dong
Die Art und Weise, wie Sie es tun, erfordert ein anderes Format und ist sowieso keine gute Idee. Crontabs in /etc/cron.d
haben ein etwas anderes Format, sie erfordern einen Benutzernamen, unter dem ausgeführt werden soll. Beispiel:
* * * * * USERNAME /bin/touch /home/me/ding_dong
Ein guter Trick (wie von @cronpoetlaureate vorgeschlagen) besteht darin, den Standardfehler Ihrer Cron-Jobs zu erfassen, der kann helfen, sie zu debuggen. Beispiel:
* * * * * /bin/touch /home/me/ding_dong 2>/tmp/error
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-05-20 22:00:55
Ein möglicher Fehler ist hier wie es wird eine einzeilige Datei erstellt. Aus Ubuntu-Dokumentation:
...zeile hat fünf Zeit-und Datumsfelder, gefolgt von einem Befehl, gefolgt von einem newline-Zeichen.
Zum Beispiel funktioniert diese Art der Erstellung nicht:
printf "* * * * * /bin/touch /home/me/ding_dong" > /etc/cron.d/ding_dong
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-12-19 23:22:15