J'ai ajouté un travail cron récemment, mais j'ai fait une erreur dans le chemin en donnant la commande et par conséquent, le travail n'a jamais réussi. Existe-t-il un moyen de tester les changements cron que nous avons effectués?
Veuillez noter que j'avais en effet copié et collé la commande à partir de ma ligne de commande et c'est juste une pression de touche erronée qui a causé cela.
Cette question a également été posée le erreur de serveur et a recueilli quelques réponses supplémentaires
Ce qui suit est une version paraphrasée de la solution de Marco : (Je ne sais pas si la meilleure ediquite ne fournit pas de réponse de lien uniquement ou ne copie pas la solution de quelqu'un d'autre)
Créer un fichier d'environnement avec une entrée temporaire cron
* * * * * /usr/bin/env > /home/username/cron-env
Créez ensuite un script Shell appelé run-as-cron
qui exécute la commande en utilisant cet environnement.
#!/bin/sh
. "$1"
exec /usr/bin/env -i "$Shell" -c ". $1; $2"
Donnez-lui la permission d'exécuter
chmod +x run-as-cron
puis il est ensuite utilisé comme ceci:
./run-as-cron <cron-environment> <command>
par exemple.
./run-as-cron /home/username/cron-env 'echo $PATH'
Lorsque je veux tester mes tâches cron, je règle généralement l'intervalle très bas et surveille de près les journaux. Lorsque je suis convaincu que l'entrée est correcte, je remets l'intervalle à une valeur saine.
Par exemple, exécutez le travail toutes les deux minutes:
*/2 * * * * echo "Hello World"
Et je cours tail -f
sur mon fichier journal (/var/log/syslog
sur Debian).
La réponse de Joshua ne fonctionne pas pour moi. Deux problèmes:
Variables dans cron-env
le fichier n'est pas exporté (set -a
nécessaire).
Le script est toujours lié au tty actuel (setsid
nécessaire).
Le script run-as-cron
devrait être
#!/bin/sh
. "$1"
exec setsid /usr/bin/env -i "$Shell" -c "set -a; . $1; $2" </dev/null
Pas assez de représentant pour corriger sa réponse ou ajouter un commentaire ...
utilisez la commande crontab -e Cela ouvrira un éditeur vim et tout ce que vous avez à faire ici est * * * * * /somepath/urscript.sh, assurez-vous d'avoir les espaces appropriés entre les dates et le chemin du script Après l'exécution, vous pouvez vérifier dans/var/spool/mail qu'il y aura une trace complète de l'exécution du script ou des erreurs. Pour les tests, il n'y a aucun moyen .. mais au cas où ur sh urscript.sh fonctionne, alors cron tab n'aura aucun problème car c'est exactement la même chose que vous faites manuellement.