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.