J'ai remplacé exec cron
avec exec cron -L 15
l'exécution sudo service cron reload
, sudo service cron restart
mais rien n'a changé. Cron n'enregistre pas la fin des travaux et n'enregistre pas les travaux ayant échoué. Je n'avais aucun problème dans Ubuntu 14.04, mais maintenant j'ai ce problème dans Ubuntu 16.04. Qu'est-ce que je fais de mal ?
Pas à pas :
J'ai d'abord modifié /etc/init/cron.conf :
sudo sed -i 's|exec cron$|exec cron -L15|' /etc/init/cron.conf && sudo restart cron && cat /etc/init/cron.conf
Alors maintenant c'est
$ cat /etc/init/cron.conf
# cron - regular background program processing daemon
#
# cron is a standard UNIX program that runs user-specified programs at
# periodic scheduled times
description "regular background program processing daemon"
start on runlevel [2345]
stop on runlevel [!2345]
expect fork
respawn
exec cron -L 15
J'ai fait la même configuration dans mon Ubuntu 16.04 ainsi que sur Ubuntu 14.04 sur l'autre PC.
Le journal Cron dans Ubuntu 14.04 est le suivant :
$ grep CRON /var/log/syslog
Aug 26 16:05:01 y1404 CRON[6825]: (y) CMD (foo # JOB_ID_1)
Aug 26 16:05:01 y1404 CRON[6824]: (CRON) error (grandchild #6825 failed with exit status 127)
Ainsi, vous pouvez voir la deuxième ligne avec une notification d'erreur sur la commande inexistante foo
. Mais dans Ubuntu 16.04, il n'y a pas de notification d'erreur dans le journal :
Aug 26 16:25:01 my CRON[7259]: (y) CMD (foo # JOB_ID_129)
Meilleure réponse
À partir d'Ubuntu 15.04, upstart en utilisant /etc/init/*.conf
est remplacé par systemd en utilisant les fichiers de configuration dans /lib/systemd/system/
et /etc/systemd/system/
. Bien qu'un fichier /etc/init/cron.conf
existe toujours dans Ubuntu 16.04, le script normalement utilisé pour démarrer cron
est maintenant /lib/systemd/system/cron.service
. Si vous souhaitez ajouter des options supplémentaires, modifiez ce fichier avec
sudo systemctl edit --full cron
et remplacer la ligne
ExecStart=/usr/sbin/cron -f $EXTRA_OPTS
au revoir. g.
ExecStart=/usr/sbin/cron -L 15 -f $EXTRA_OPTS
Pour recharger la configuration, exécutez sudo systemctl restart cron
ou tout simplement redémarrer. Vous pouvez tester avec quelle commande exacte un service a été démarré en utilisant systemctl status
, e. g. pour cron
(voir dernière ligne) :
> systemctl status cron
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since So 2017-08-27 09:56:18 CEST; 1h 15min ago
Docs: man:cron(8)
Main PID: 26021 (cron)
CGroup: /system.slice/cron.service
└─26021 /usr/sbin/cron -f