Comment bien utiliser crontab

Créé le : 15 août 2011
Catégorie: Ubuntu
Mise à jour : 15 mai 2013

Comment bien utiliser crontab

closeCet article a été publié il y a 8 ans 1 mois 7 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Crontab? à tes souhaits!

Crontab n’est pas un gros mot. C’est simplement un fichier qui permet de programmer le lancement de programmes (c’est comme le planificateur de tâches sous Win$).

Par exemple on veut programmer une sauvegarde tous les jours à 3H00, c’est crontab qui se chargera de la lancer.

 

Où est le fichier à modifier?

Il faut d’abord savoir qu’il existe plusieurs fichiers crontab: 1 par utilisateur + 1 global (pour le système)

Le fichier crontab pour les utilisateurs sont  :

 /var/spool/cron/crontabs/nomdel'utilisateur

Le fichier crontab du système est (pour faire simple):

/etc/crontab

Attention : Ne jamais modifier le fichier crontab du sytème (il faut savoir qu’il existe mais il est réservé au système pour les mises à jour, faire tourner les logs,etc…)

 

Comment modifier le fichier?

Pour modifier le fichier il faut utiliser la commande

crontab -e

On se retrouve dans un éditeur en mode texte tout moche…personnellement j’ai jamais su comment ça marche donc j’utilise la commande

sudo gedit /var/spool/cron/crontabs/votre_nom_d'utilisateur

 

Syntaxe du fichier crontab

C’est assez simple en fait quand on a compris le système:

mm hh jj MMM JJJ tâche > log
  • mm représente les minutes (de 0 à 59)
  • hh représente l’heure (de 0 à 23)
  • jj représente le numéro du jour du mois (de 1 à 31)
  • MMM représente le numéro du mois (de 1 à 12) ou l’abréviation du nom du mois (jan, feb, mar, apr, …)
  • JJJ représente l’abréviation du nom du jour ou le chiffre correspondant au jour de la semaine (0 représente le dimanche, 1 représente le lundi, …, 7 représente le dimanche)
  • tâche représente la commande ou le script shell à exécuter
  • log représente le nom d’un fichier dans lequel stocker le journal des opérations. Si la clause > log n’est pas spécifiée, cron enverra automatiquement un courriel de confirmation. Pour éviter cela, il suffit de spécifier > /dev/null.

Pour chaque unité de temps (minute/heure/…) les notations possibles sont :

  • * : à chaque unité de temps (0, 1, 2, 3, 4…)
  • 5,8 : les unités de temps 5 et 8
  • 2-5 : les unités de temps de 2 à 5 (2, 3, 4, 5)
  • */3 : toutes les 3 unités de temps (0, 3, 6, 9…)
  • 10-20/3 : toutes les 3 unités de temps, entre la dixième et la vingtième (10, 13, 16, 19)

Il existe aussi des raccourcis comme:

  • @reboot pour exécuter une commande au démarrage
  • @yearly pour exécuter une commande tous les ans (au 1er janvier à minuit)
  • @annually pour exécuter une commande tous les ans (au 1er janvier à minuit)
  • @monthly pour exécuter une commande tous les mois (le 1er de chaque mois à minuit)
  • @weekly pour exécuter une commande toutes les semaines (tous les dimanches à minuit)
  • @daily pour exécuter une commande tous les jours (à minuit)
  • @midnight pour exécuter une commande à minuit
  • @hourly pour exécuter une commande toutes les heures

 

Exemple pour la sauvegarde quotidienne

Comme vu ici je me suis fait un script pour sauvegarder automatiquement mon home. L’idée est donc de lancer mon script automatiquement quand je suis pas devant le pc

  • j’ouvre mon fichier crontab
sudo gedit /var/spool/cron/crontabs/cyberscooty
  • En général à 3H00 du mat’ je dort donc pour lancer mon script je rajoute une ligne dans mon crontab comme suit:
0 3 * * * /home/cyberscooty/.script_backup_cyberscooty.sh > /dev/null

Il s’exécute donc bien à 3H00 tous les jours du mois, tous les mois et tous les jours de la semaine le script /home/cyberscooty/.script_backup_cyberscooty.sh (il vaut mieux mettre le chemin complet du script)

 

 

 

source : http://fr.wikipedia.org/wiki/Crontab (FR)
source : http://doc.ubuntu-fr.org/cron (FR)

Tags: - -

Laissez un commentaire