Vos messages d'erreurs cron
sont envoyés au compte mail
de l'utilisateur qui exécute la tâche cron
.
Tapez mail
sur la ligne de commande pour voir les messages. Pour une liste des commandes mail
, consultez man mail.
Vous devriez recevoir un e-mail avec un message d'erreur ressemblant à :
/bin/sh : -c : ligne 0: fin de fichier inattendue en cherchant un correspondant à `"'
/bin/sh : -c : ligne 1: erreur de syntaxe : fin de fichier inattendue
Concernant votre commande et pourquoi elle ne fonctionne pas, c'est parce que le signe "%" est un caractère "nouvelle ligne", ce qui signifie qu'il dit à la shell de "passer à la ligne suivante". Ainsi, après avoir rencontré le premier "%", il passe à la ligne suivante et ne voit jamais le reste de la commande. Cela est confirmé par l'"fin de fichier inattendue en cherchant un correspondant à ' "(double quote).
La page de manuel locale pour crontab (man crontab
) est assez sommaire en détails et je suppose que c'est parce que cron
a été remplacé par launchd
1. Cependant, la page de manuel de crontab de developer.apple.com l'explique
Le "sixième" champ (le reste de la ligne) spécifie la commande à exécuter. Toute la partie de la commande de la ligne, jusqu'à un caractère de nouvelle ligne ou %, sera exécutée par /bin/sh ou par la shell spécifiée dans la variable SHELL du fichier cron. Les signes de pourcentage (%) dans la commande, sauf s'ils sont échappés avec un backslash (\), seront transformés en caractères de nouvelle ligne, et toutes les données après le premier % seront envoyées à la commande en tant qu'entrée standard. La commande peut éventuellement être préfixée par "@AppleNotOnBattery
" pour indiquer à cron de ne pas exécuter la commande lorsqu'il fonctionne sur batterie. Par exemple, le "sixième" champ lors de l'utilisation de cette option ressemblerait à quelque chose comme : "@AppleNotOnBattery /usr/bin/touch /tmp/foo"
Votre correction :
Donc, ce que vous devez faire, c'est "échapper" le caractère "%" avec un backslash (\) pour qu'il lui dise de l'interpréter littéralement.
Votre commande devrait être :
0/5 * * * * /bin/date "+\%Y-\%m-\%d \%H:\%M:\%S" >> /tmp/log.txt
1 De man crontab
: (Note pour Darwin: Bien que cron(8) et crontab(5) soient officiellement pris en charge sous Darwin, leur fonctionnalité a été absorbée par launchd(8), qui fournit un moyen plus flexible d'exécuter automatiquement des commandes. Voir launchctl(1) pour plus d'informations.)