Crontab est un outil extrêmement pratique
servant à planifier l’exécution des tâches/commandes. Habituellement il se
gère via la commande [man]crontab[/man]
: crontab -e
pour éditer, crontab
-l
pour lister…et d’autres encore. crontab -u user -l
permet de lister
pour l’utilisateur en question. Mais comment faire pour scripter la création
ou la modification d’une ligne dans un crontab ?
Tout se passe en fait dans le
répertoire /var/spool/cron/crontabs
:
root@Server:~# ls -l /var/spool/cron/crontabs/ total 8
-rw------- 1 root crontab 294 2010-07-12 19:54 root
-rw------- 1 server crontab 264 2010-07-24 10:54 server
Ajouter un crontab
Partons du principe que je veux ajouter un crontab pour l’utilisateur “tym”
via un script. Il va donc falloir que je crée le fichier
/var/spool/cron/crontabs/tym
, oui mais que faire si il existe déjà ? On va
se compliquer un peu la vie, mais vous allez comprendre pourquoi :
1 2 3 4 5 6 7 8 9 |
|
Comme vous pouvez le voir, on modifie les droits sur le fichier que lorsqu’il faut créer. Pour ajouter une tâche, rien de plus simple :
echo '*/1 * * * * /home/tym/scripts/mon_script' >> $CRONTAB
Attention à la syntaxe
car ici pas de vérifications via la commande crontab
!
Modifier une ligne de crontab
Je veux modifier la ligne que je viens de créer dans le crontab de “tym”, en
faisant plutôt exécuter /home/tym/scripts/mon_second_script
:
1 2 3 4 5 6 7 8 |
|
Et hop, l’affaire est pliée ! Notez l’utilisation des “\/” pour protéger les ”/” dans le sed.
Bonne planification ;-)