Midilibre.fr
Tous les blogs | Alerter le modérateur| Envoyer à un ami | Créer un Blog


30/10/2008

[linux] - Crontab, petit guide explicatif

Calendar-Icon.jpgCrontab, va vous permettre de lancer des commandes à moment donné (Lancer l’excellent PyQtRadio au moment de votre émission préféré pour être sur de ne pas la louper, ou encore de lancer une tache de maintenance, de sauvegarde… bref tout ce qui est routinier est pour Crontab)

En fait Crontab est juste un petit fichier et pour éditer ce fichier il suffit de lancer crontab –e (cela vous lancera nano).

Vous pouvez régler l’éditeur de votre choix en faisant export EDITOR=gedit (si vous préférez kate, vi… vous mettez ce que vous voulez). Il est a noté que vous pouvez placer ce export dans le fichier .bashrc (dans votre dossier utilisateur)
Après avoir fait votre crontab –e, vous arrivez devant ceci :

# m h dom mon dow command

Il ne vous reste plus qu’a ajouter des lignes pour indiquer un moment et une commande à lancer. Chaque ligne representera une commande et chaque espace de cette ligne une section. Les sections sont divisées comme suit :

Minute (0-59) Heure (0-23) Jour (1-31) Mois (1-12) Jour de la semaine (0-6 sachant que dimanche étant jour en théorie chômé vaut 0 (moyen mnémotechnique pour s’en souvenir)) et enfin dernière section la commande.


Donc si vous voulez lancer une commande tout les lundis matin à 8h30 il vous faudra mettre :

30 08 * * 1 ma_commande

Les * signifient vaut pour tous (en prends tout les mois, et peut importe le jour ou tombe le lundi)
Si vous êtes superstitieux vous pouvez lancer une commande tout les vendredi 13 à 12h15par exemple :

15 12 13 * 5 ma_commande

Il est également possible de rajouter des notions d’intervalle avec le tiret et la virgule:

30 08 1-15 * 1 ma_commande
Le tiret permet de dire du 1 au 15

30 08 1,15 * 1 ma_commande
La virgule permet de dire le 1 et le 15

*/5 08 1,15 * 1 ma_commande
Le / permet d'indiquez une fréquence, la en l'occurence toutes les 5 minutes.

Une fois vos différentes tâches crées, vous pouvez vérifier que crontab les à bien prise en compte avec la commande crontab -l

# m h dom mon dow command
30 08 1,15 *  1 updatedb

La commande crontab –r permet de supprimer les tâches, et l’option –i permet de poser la question avant de tout supprimer.

Vous noterez que si vous voulez lancer une commande d’un GUI (vlc, firefox…) cela ne fonctionne pas car il faut indiquer ou afficher le programme :
01 04 * * * export DISPLAY=:0 && vlc
( :0 étant l’affichage par défaut)
Dernière petite information, si vous disposez des droits nécessaire vous pouvez éditer le crontab d’un autre utilisateur avec crontab –u -e

NOTE : pour vos commandes vous pouvez bien entendu cumuler avec un &&
30 08 1,15  * 1 updatedb && cp –rf /home/steph/sav /media/sav