crontab est une commande qui vous permet d'exécuter des commandes à des intervalles de temps réguliers, avec l'avantage supplémentaire que vous n'avez pas à être connecté au système et que la sortie de ces commandes vous est envoyée par courrier électronique. Vous pouvez spécifier les intervalles en minutes, en heures, en jours et même en mois. crontab agira différemment en fonction des options :
Commençons par éditer un
fichier crontab
. En tapant crontab
-e, vous vous retrouverez en face de votre éditeur de texte
préféré si vous avez initialisé la variable d'environnement
EDITOR
ou VISUAL
, autrement
Vi sera utilisé. Une ligne dans un fichier
crontab
est composée de six champs. Les cinq
premiers sont les intervalles de temps en minutes, heures, jours dans
le mois, mois et jours dans la semaine. Le sixième champ est la
commande à exécuter. Les lignes commençant par un #
sont considérées comme des commentaires et seront ignorées par
crond (le programme en charge d'exécution des fichiers
crontab
). Le format est un peu différent pour le
système crontab
, dans
/etc/crontab
. Dans ce cas, le sixième champ est
le nom de l'utilisateur qui lancera le programme définit dans un
septième champ. Ceci ne doit être employé qu'a des fins
administratives ou relatives à la sécurité (comme un utilisateur créé
spécifiquement pour lancer un serveur de base de données ou un
anti-virus). Voici un exemple de fichier
crontab
:
# Si vous ne voulez pas recevoir de courrier, # "décommentez" la ligne suivante #MAILTO="votre_adresse_courriel" # # Faire un rapport de toutes les nouvelles images # à 14h tous les deux jours, en partant de # l'exemple ci-dessus --- après ceci, # "retoucher" le fichier "stamp". Le "%" est # traité comme un retour chariot, cela vous # permet de mettre plusieurs commandes sur la # même ligne. 0 14 */2 * * find /shared/images \ -cnewer /shared/images/stamp \ -a -iregex ".*\.jpe?g" \ -a -not -regex \ ".*/old/.*"%touch /shared/images/stamp # # Jouer une mélodie tous les ans à Noël :) 0 0 25 12 * mpg123 $HOME/musiques/joyeux_noel.mp3 # # Imprimer la liste des courses tous les mardis # à 17 heures... 0 17 * * 2 lpr $HOME/liste-courses.txt
Il y a plusieurs autres moyens de
spécifier des intervalles que ceux mentionnés dans l'exemple. Par
exemple, vous pouvez spécifier un ensemble de valeurs discrètes séparées par
des virgules (1,14,23
) ou un intervalle
(1-15
), ou même combiner les deux
(1-10,12-20
), éventuellement avec un pas
(1-12,20-27/2
). Maintenant, il vous reste à
trouver des commandes utiles à y mettre!