La page de man de crontab.
Crontab charge un environnement minimal et différent de celui de root! Ça veut dire qu'il n'initialise pas un $PATH complet.
Il vaut donc mieux mettre le chemin complet vers le programme qu'on veut lancer (qu'on peut trouver avec whereis) :
# whereis certbot certbot: /usr/local/bin/certbot
On peut voir quel sont les variables d'environnement déclarées par crontab en rajoutant cette ligne :
* * * * * env > /tmp/cronenv
Résultat :
$ cat /tmp/cronenv LANGUAGE=fr_BE:fr HOME=/root LOGNAME=root PATH=/usr/bin:/bin LANG=fr_BE.UTF-8 SHELL=/bin/sh PWD=/root
Source : sametmax.com
Il faut dé-commenter une ligne
# vim /etc/rsyslog.conf (...) cron.* /var/log/cron.log (...)
Sur Ubuntu, le fichier à modifier est dans un sous-dossier : /etc/rsyslog.d/50-default.conf
On relance ensuite le service :
# service rsyslog restart
Source : p3ter.fr
Pour utiliser la commande date dans crontab, il faut faire attention à échapper les “%” en mettant un backslash devant :
00 5 * * * cp /home/simon/mon/fichier.txt /dossier/de/backup/$(date '+\%Y-\%m-\%d')-mon-fichier.txt