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 10 à 15 minutes. Pourquoi?
La commande auto-update.sh s'exécute facilement si elle est exécutée manuellement. Comment puis-je briser la chaîne d'exécution et lancer mon script à partir de cron?
KeepAlive
etQueueDirectories
).Réponses:
L'environnement dans lequel un travail cron s'exécute est assez différent d'un shell interactif; il est probable que le script s'exécute, mais pas avec succès. L'une des plus grandes différences est que pour les tâches cron, le CHEMIN 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é sauf si votre script définit son propre CHEMIN ou fournit des chemins explicites aux commandes. L'autre grande différence est simplement qu'il n'est pas connecté à une session interactive, donc s'il essaie de faire quelque chose d'interactif (lu depuis le terminal, etc.) qui échouera. Essayez de modifier l'entrée cron en:
... et voyez si quelque chose d'informatif apparaît dans le journal.
la source
ps -ax | grep [c]ron
et verrais s'il répertorie le démon cron (/ usr / sbin / cron) en cours d'exécution. Si c'est le cas, essayez le test de l'enregistreur de bmike. Dans tous les cas, vérifiez les journaux (/var/log/system.log et l'élément "Tous les messages" dans l'utilitaire de console) et voyez s'il y a quelque chose de pertinent.C'est difficile à dire, mais que se passe-t-il si vous ajoutez un deuxième travail cron à exécuter toutes les 5 minutes environ et faites-le appeler un outil construit par le système qui enregistre les messages dans system.log?
De cette façon, vous saurez que cron est en cours d'exécution pour l'utilisateur en question et pouvez vous concentrer sur le démarrage de cron ou la correction de votre script pour qu'il s'exécute dans l'environnement cron limité. (Vous pouvez regarder l'horloge murale et en choisir quelques-unes qui arriveront bientôt ou même les prochaines minutes - par exemple, éditer à 12:34 mettre 35,36,37,38 pour les minutes à exécuter et enregistrer le fichier cron .)
la source
Cela fait un moment que vous posez cette question, mais il semble qu'aucune solution ne soit apparue dans ce fil.
Selon la façon dont vous créez un utilisateur-crontab, il peut être nécessaire de l'exécuter après l'avoir modifié:
Pour voir si le nouveau crontab (également après l'avoir modifié) a été activé, vérifiez avec:
la source
J'ai eu le même problème. Vous devez ajouter le chemin d'accès à votre script bash:
la source
J'ai eu le même problème. Il a disparu après avoir ajouté une nouvelle ligne après mon travail dans mon fichier crontab (je suis un total crontab n00b, donc je n'ai aucune idée si ce comportement est largement connu ou non).
la source