12 votes

Cron script ne s'exécute pas sur Mavericks

J'ai configuré un fichier crontab utilisateur comme suit :

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh

Mais il ne s'exécutera pas. J'ai attendu, genre, 10-15 minutes. Pourquoi ?

La commande auto-update.sh s'exécute facilement si elle est exécutée manuellement. Comment puis-je rompre la chaîne d'exécution et faire en sorte que mon script s'exécute depuis cron ?

18voto

Gordon Davisson Points 30215

L'environnement dans lequel une tâche cron s'exécute est assez différent de celui d'un shell interactif ; il est probable que le script s'exécute, mais sans succès. Une des plus grandes différences est que pour les travaux cron, le PATH par défaut est juste "/usr/bin:/bin", donc si vous utilisez des commandes qui ne sont pas dans /usr/bin ou /bin, elles ne seront pas trouvées à moins que votre script définisse son propre PATH, ou fournisse des chemins explicites aux commandes. L'autre grande différence est simplement qu'il n'est pas connecté à une session interactive, donc s'il essaye de faire quoi que ce soit d'interactif (lire depuis le terminal, etc.) cela échouera. Essayez de changer l'entrée cron en :

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh >>/tmp/auto-update.log 2>&1

...et voyez si quelque chose d'informatif apparaît dans le journal.

4voto

Oskar Points 1242

C'est difficile à dire, mais que se passerait-il si vous ajoutiez une deuxième tâche cron qui s'exécuterait toutes les 5 minutes environ et qui appellerait un outil construit par le système pour enregistrer les messages dans system.log ?

0,5,10,15,20 * * * * /usr/bin/logger "cron is working"

De cette façon, vous saurez que cron est en cours d'exécution pour l'utilisateur en question et vous pourrez vous concentrer soit sur le démarrage de cron, soit sur la correction de votre script pour qu'il s'exécute dans l'environnement cron limité. (Vous pouvez regarder l'horloge murale et choisir quelques heures qui arrivent bientôt ou même les prochaines minutes - par exemple, édition à 12:34 mettre 35,36,37,38 pour les minutes à exécuter et enregistrer le fichier cron).

4voto

Ben Points 141

Cela fait un moment que vous avez posé cette question, mais il semble qu'aucune solution ne soit apparue dans ce fil de discussion.

Selon la façon dont vous créez une user-crontab, il peut être nécessaire de l'exécuter après l'avoir modifiée :

crontab ~/.yourcrontabfile

Pour voir si la nouvelle crontab (même après l'avoir modifiée) a été activée, vérifiez avec :

crontab -l

1voto

nikie Points 7479

J'ai eu le même problème. Vous devez ajouter le chemin à votre bash script :

#!/bin/sh
PATH=/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin

0voto

RMD Points 1

J'ai eu le même problème. Il a disparu après que j'ai ajouté un saut de ligne après mon travail dans mon fichier crontab (je suis un n00b total de crontab, donc je n'ai aucune idée si ce comportement est largement connu ou non).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X