web-dev-qa-db-fra.com

Test cron entry

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.

32
Karthick S

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'
27
Joshua

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/syslogsur Debian).

46
Martin Olsen

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 ...

6
Fuujuhi

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.

0
Amit Bhat