Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Introduction aux tâches CRON

Article posté le 07-03-2014 dans la catégorie Linux

Crontab est une commande qui permet de modifier le fichier contenant la liste des tâches à effectuer, leur lancement étant réalisé par le programme cron.

Attention : ne pas confondre avec SHELL, qui est un language utilisé pour réaliser des scripts, pouvant être complexes. CRON permet par exemple d'exécuter ces scripts selon divers paramétrages, par exemple à des intervalles régulier.

1- Un exemple pour essayer 

Tout d'abord, créez un script bidon : sur votre bureau, créez un fichier texte puis ouvrez-le avec votre éditeur. A l'intérieur, collez-ceci :

echo Toutou;
sleep 5;
echo Tatie;

Enregistrez et fermez. Renommez-le monScript.sh. Lancez-le, choisir "Lancer dans un terminal" (si vous n'avez pas cette option, prenez 30 secondes pour lire ceci ). Normalement, la console se lance, affiche "Toutou", fait une pause de 5 secondes, puis affiche "Tatie", avant de se fermer. Notre script fonctionne.

Maintenant, je souhaite que mon petit script s'exécute automatiquement toutes les minutes. Lancez la console, et saisissez :

$ chmod +x monScript.sh //Donne le droit d'exécution au script

Puis tapez ensuite :

$ crontab -e

Apparait alors :

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.tiny
Choose 1-3 [2]:

Je vous conseille de choisir le 2. Notez que cette opération n'est à réaliser que la première fois.

Vous voici à présent dans votre contab. Tout est en commentaire (il y a un dièse devant chaque ligne). Soit vous supprimez tout, soit vous saisissez vos tâches tout en bas pour des raisons de clarté. Quand vous aurez saisi votre tâche, faites Ctrl+X puis "O" pour sauvegarder.

Mais comment paraméter notre script? Collez juste cette-ligne puis sauvegardez :

*/1 9-17 * * mon,tue,wed,thu,fri /home/eric/Bureau/monScript.sh > /home/eric/Bureau/monScript.log

Pensez à remplacer "eric" par votre nom d'utilisateur.

Cette ligne va dire à cron d'exécuter monScript.sh toutes les minutes, du lundi au vendredi, de 9 heures à 17 heures. Enfin, il sauvegardera un log dans monScript.log.

Attendez 1 minute, le fichier monScript.log apparait sur le bureau. Vous pouvez l'ouvrir, et vous y trouverez le contenu du texte que nous souhaitions afficher. Cela marche donc.

NOTEZ BIEN LES ESPACES ENTRE LES ETOILES! (vous comprendrez plus loin)

2- Quelques explications

Comment utiliser les paramètres de cron? Voici :

# m h  dom mon dow   command

Notez qu'il ne doit y avoir jamais plus d'un espace entre chaque paramètre.

Voici une image explicant bien les emplacements pour les dates et heures (issu de stackoverflow) :

Exemple crontab

3- Quelques exemples utiles

1- Exécuter un script une seule fois à une date spécifique:

30 09 12 06 * /home/eric/ma-sauvegarde.sh

Ainsi, le 12 juin, peut importe le jour de la semaine, à 9h30, s'exécutera se script.

2- Exécuter un script plusieurs fois

A midi et 17h00, tous les jours, tous les mois, peu importe le jour de la semaine

00 12,17 * * * /home/eric/ma-sauvegarde.sh

Tous les jours de la semaine sauf samedi et dimanche, à chaque heure pile, de 9 heures à 17h :

00 09-18 * * 1-5 /home/eric/ma-sauvegarde.sh

Toutes les minutes :

* * * * * /home/eric/ma-sauvegarde.sh

Toutes les 10 minutes :

*/10 * * * * /home/eric/ma-sauvegarde.sh

 

4- Utilisation des raccourcis :

Le premier jour de chaque année :

@yearly /home/eric/ma-sauvegarde.sh

Le premier jour du mois :

@monthly /home/eric/ma-sauvegarde.sh

Tous les jours (à 00:00) :

@daily /home/eric/ma-sauvegarde.sh

 

5- Consulter les logs

Pour consulter les logs et avoir ainsi accès à certaines informations comme les échecs, tout se trouve dans le fichier :

/var/log/syslog

Pour faire le tri et ne voir que ce qui concerne les tâches CRON :

grep CRON /var/log/syslog

Tweet
comments powered by Disqus