J'ai une configuration comme ci-dessous mais elle n'est jamais exécutée.
$ chmod +x /var/tmp/myscript.sh
$ vim /var/tmp/crontab.sh;
* * * * * sleep(10); /var/tmp/myscript.sh
$ crontab /var/tmp/crontab.sh
Maintenant, remarquez que cela ne fonctionne pas. Qu'est-ce que je fais mal?
$ grep CRON /var/log/syslog
Nov 28 15:20:01 Sun CRON[1768]: (Sun) CMD (sleep(10);/var/tmp/myscript.sh)
Nov 28 15:20:01 Sun CRON[1766]: (CRON) error (grandchild #1768 failed with exit status 2)
Nov 28 15:20:01 Sun CRON[1766]: (CRON) info (No MTA installed, discarding output)
suivi:
$ vim /var/tmp/crontab.sh
* * * * * sleep 10; /var/tmp/myscript.sh>/dev/null 2>&1
$ tail -f /var/log/syslog | grep CRON
Nov 28 15:50:02 Sun CRON[2301]: (Sun) CMD (sleep 10; /var/tmp/myscript.sh>/dev/null 2>&1)
Nov 28 15:51:01 Sun CRON[2312]: (Sun) CMD (sleep 10; /var/tmp/myscript.sh>/dev/null 2>&1)
sleep
ne prend pas l'argument entre parenthèses (comme en C), il devrait donc être
* * * * * sleep 10; /var/tmp/myscript.sh
Testez toujours les commandes du shell système avant de l’envoyer à cron
;).
En fait, le meilleur moyen d'utiliser crontab est d'utiliser crontab lui-même:
crontab -l # liste les entrées actuelles de la crontab
crontab -e # édite la table cron
Dès que vous avez terminé de modifier la crontab (via 'crontab -e'), elle est activée et lance tout ce qui a été défini à chaque fois.
Notez que la machine doit être en marche pour que crontab fonctionne. Si vous voulez quelque chose de plus flexible, vous pouvez regarder anacron (8).