Linux Logiciels
Cron
Planifier l'éxecution automatique des tâches




Ordonnancement des tâches

On va voir comment automatiser des tâches récurrentes qui sont à exécuter de façon régulière. La plupart du temps cela sert à automatiser des sauvegardes à intervalles de temps réguliers et aux heures où le système est le moins sollicité, généralement pendant la nuit pour les serveurs.

Utilisation de Cron

Cron est basé sur une table référençant les tâches ordonnancé.
Il y à une table général pour le système dans:
/etc/crontab
Que l'on peut éditer directement avec un éditeur de texte où les tâches seront opérationnel dès ça sauvegarde.

Et une autre table d'ordonnancement relatif à l'utilisateur qui l'exécute, ce qui permet de lancer des tâches avec les droits de ce compte.
Chaque utilisateur possède sa propre table stockée dans un fichier portant son nom et placé dans le répertoire:
/var/spool/cron/crontabs/nom_utilisateur

Par contre il ne faut pas éditer directement cette table, il faut passer par la commande "crontab" où sinon vous devrez redémmarer le service cron à chaque modification pour qu'il prennent en compte les changements.

Redémarrage du service cron:

/etc/init.d/cron restart



En premier vous avez deux possibilités soit, vous loguer sur le compte utilisateur avec lequelle les tâches seront exécuté automatiquement:

su nom_utilisateur



Ou rajouter l'option "-u nom_utilisateur" à la commande "crontab" pour utiliser la table de ce compte:
Exemple:

crontab -u toto



Option "-l" (L minuscule) va lister les tâches d'ordonnancé:

crontab -l


Ou

crontab -u nom_utilisateur -l



S'il y à aucune tâche de prévue vous allez avoir ce résultat:

no crontab for login



Option "-e" pour éditer la table cron:

crontab -e


Ou

crontab -u nom_utilisateur -e



Un écran apparaît listant les tâches existantes et si c'est la 1ère fois que vous automatisez une tâche pour cette utilisateur, il sera par conséquent vierge.

Il faudra ensuite taper autant de lignes que il y aura de tâche à automatiser.
Chaque ligne doit se présenter sous la forme :

m : minutes (de 0 à 59)
h : heures (de 0 à 23)
dom : jour du mois (de 1 à 31)
mon : mois (de 1 à 12)
dow : jour de la semaine (0=lundi, 1=mardi, 6=dimanche)
user : utilisateur qui exécutera la commande (Option n'est valable que pour le fichier /etc/crontab)
command : la commande à exécuter

Astuce: Vous pouvez programmer le lancement d'un script qui aura pour but de lancer plusieurs tâches selon des conditions par exemple.

Voici la syntaxe de configuration des différents signe:

* => Tous (Dépend de la colonne où il est placé, tous les jours, tous les mois, toutes les heures, tous les utilisateurs ...)
/ => Répetition
- => Intervalle
, => Plusieurs valeurs

Il existe des mots clés pour simplifié la vie.
syntaxe :
mot_clé commande

@hourly => une fois par heure
@daily => une fois par jour
@weekly => une fois par semaine
@monthly => une fois par mois
@yearly => une fois par an
@reboot => au redémarrage de la machine


Quelques exemples

*/5 * * * * ps u >> /home/cedric/user.log
Toutes les 5 minutes on sauvegarde dans un fichier la sortie de la commande "ps u".

30 20 * * 0-4 /etc/init.d/mysql stop
Du lundi au vendredi (0-4) à 20h30 on arrête le service mysql.

0 21 1,15 * * /home/cedric/netoyage.sh
Le 1er et le 15 de chaque mois à 21h00 on lance un scripte de nétoyage du système.



Par O.Cédric
Sur www.octetmalin.net

Article publié le:
27/06/2011 13:15






Cette page vous à plus?

Dîtes que vous l'aimez en cliquant sur le bouton Facebook.