2010-08-14 6 views
3

J'ai créé une tâche cron avec la commande crontab -e:Linux cronjob ne fonctionne pas (exécution du script)

*/1 * * * * /var/lib/tomcat/webapps/ROOT/WEB-INF/scripts/test.sh 

Ce fichier test.sh doit être exécuté à chaque minute. Mais ça ne marche pas. Si je lance le script manuellement, cela fonctionne très bien. Donc, je pense que le problème est le cronjob pas le script;)

Y at-il des autorisations ou autre chose qui bloquent le cronjob?

La syntaxe cronjob est-elle correcte?

Thx

+0

votre question n'est pas une question de programmation –

+0

Le problème est le script, pas le cronjob. –

+2

Cette question concerne la programmation. – MarkR

Répondre

4

Pour commencer, vous n'avez pas besoin /1 si vous voulez le faire à chaque minute. Il suffit de régler le champ des minutes sur *.

Ensuite, vous devez placer, comme les premières lignes dans votre script de test (bien après la ligne #! si elle est là):

env >/tmp/test.sh.dummy 
set >>/tmp/test.sh.dummy 

et voir si ce fichier apparaît.

Cela vous dira si le script est en cours d'exécution ou non.

Si c'est pas en cours d'exécution, vérifiez que cron lui-même est en cours d'exécution:

pax> ps -ef | grep cron | grep -v grep 
root  1048  1 0 08:45 ?  00:00:00 cron 

(le mien est). Si est en cours d'exécution, le problème le plus probable est que l'environnement sous lequel cron exécute vos travaux est loin de l'environnement que votre shell vous donne. Examiner les différences entre ce qui a été sorti dans votre fichier /tmp/test.sh.dummy et ce que votre shell vous donne lorsque vous exécutez env ; set.

Questions connexes