j'utilise crontab -e
sans pour autant sudo
pour éditer les tâches cron et y ajouter la ligne suivante -
20 22 23 10 * date "+%Y-%m-%d %H:%M:%S" >> ~/Documents/log.txt
puis je vérifie le fichier journal et il ne contient pas la date et l'heure.
J'ai essayé d'éditer crontab
en tant que root, mais il ne met également pas à jour le fichier. Quel pourrait être le problème ici? Existe-t-il un moyen de consulter le journal d'exécution des tâches cron?
P.S. Mettez à jour la crontab créée sous root:
0/5 * * * * /bin/date "+%Y-%m-%d %H:%M:%S" >> /tmp/log.txt
0/5 * * * * echo >> /tmp/log2.txt
log2.txt
est créé maintenant.
el-capitan
cron
LA_
la source
la source
/bin/date
etecho
maintenant (voir question mise à jour).Réponses:
Votre
cron
les messages d'erreur sont envoyés aumail
compte de l'utilisateur qui exécute lecron
emploi.Type
mail
sur la ligne de commande pour voir les messages. Pour une liste demail
commandes, voir homme mail .Vous devriez recevoir du courrier avec un message d'erreur ayant les effets suivants:
En ce qui concerne 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 indique au 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. Ceci est confirmé par le "EOF inattendu lors de la recherche du" "" correspondant (guillemet double).
La page de manuel locale de crontab (
man crontab
) manque de détails et je spécule que c’est parce quecron
est déconseillé pourlaunchd
1 . Cependant, la page de manuel crontab de développeur.apple.com l'expliqueVotre solution:
Donc, ce que vous devez faire, c'est "échapper" le caractère "%" avec une barre oblique inverse (\) afin qu'il lui dise de l'interpréter littéralement.
Votre commande devrait être:
1 De
man crontab
: (Remarque de Darwin: bien que cron (8) et crontab (5) soient officiellement pris en charge par Darwin, leurs fonctionnalités ont été intégrées dans launchd (8), qui offre un moyen plus flexible d’exécuter automatiquement des commandes. Voir launchctl (1) pour plus d’informations. .)la source