![]()
|
||||||||||||||
|
dernière mise à jour le
27/08/2006 |
Cron et crontabA quoi ça sert ?Cron [crone] est un systême qui permet à un utilisateur d'exécuter des commandes Unix à des intervalles de temps donnés. L'intérêt d'un tel outil se situe au niveau des tâches d'administration d'un serveur : un administrateur va par exemple l'utiliser pour lancer toutes les nuits une sauvegarde complète de ses serveurs. Comment ça marche ?Le systême cron fonctionne sous Unix grâce au démon crond [cronedé ou cronedi]. Ce programme est lancé sur le serveur une bonne fois pour toute et pour tout le monde. Les utilisateurs utilisent un petit utilitaire, crontab [cronetab] , pour configurer crond. Seul problème : crontab est le seul programme utilisable et il utilise souvent vi... Crontab va donner des instructions à crond : le moment auquel il faut exécuter une certaine commande, et avec les droits de tel utilisateur. Il va de soi qu'un utilisateur donné ne peut pas demander à crond exécuter des commandes avec les droits d'un autre utilisateur, ce serait trop dangereux. Utilisation de crontabPour utiliser crontab, il est indispensable de savoir utiliser vi. Mais heureusement, si vi ne vous convient pas, vous pouvez changer d'éditeur en faisant pointer la variable d'environnement EDITOR vers un nouvel éditeur. La première chose à faire est de se logger correctement sous l'utilisateur qui devra exécuter les commandes. Il est possible pour le super-utilisateur d'utiliser l'argument -u nom_user pour demander à crond d'exécuter les commandes avec les droits de nom_user. Pour lancer crontab et configurer crond, il suffit de taper : crontab -e et on tombe sur un écran vi. Les paramètres sont pris en compte dès que l'on quitte vi. Configuration du démonLes lignes de crontab sont de deux genres : des commandes cron qui sont les commandes système à exécuter et à quel moment, et des (re)définitions de variables d'environnement. Les commentaires sont possibles avec #. Les commandes cronOn donne ligne par ligne les commandes à exécuter. Les lignes ont le format suivant : moment commandeLes commandes sont tout simplement celle que l'utilisateur taperait s'il les exécutait lui-même. Un moment se décompose en 5 champs :
Chaque champ est séparé par un espace et plusieurs éléments du même type sont séparés par des virgules (sans espace). une étoile (*) signifie : "pour tous". Exemple sous Linux : 0,10,20,30,40,50 * 1 * 7 /usr/bin/foo
Cette ligne signifie : "exécute /usr/bin/foo toutes les 0, 10, 20... minutes de toutes les heures du premier jour de chaque mois qui doit être un lundi (tous les ans)...". La combinaison est assez étrange de par son sens, mais c'est relativement puissant. Le principe en gros est de ne paramétrer que les éments qui sont intéressants et de mettre une * pour les autres. Pour lancer foo toutes les minutes, il suffit de taper : * * * * * /usr/bin/foo
La plus petite fréquence avec laquelle on exécute une commande est donc de 1 minute. Variables d'environnementLes lignes de crontab permettent aussi de (re)définir des variables d'environnement pour l'exécution des commandes cron. Cela se fait très simplement : VARIABLE=VALEUR
Cela va attribuer la valeur VALEUR à la variable d'environnement VARIABLE. Seule la variable LOGNAME ne peut être (re)définie. Si vous mettez des espaces dans la valeur, il est préférable d'encadrer celle-ci par des guillemets. Exemple sous Linux : TOTO=VALEUR
0,10,20,30,40,50 * 1 * 7 /usr/bin/fooATTENTION !!! les fichiers de profile des utilisateurs (.profile par exemple) ne sont pas lus avant l'exécution des commandes par cron. Cela peut entraîner des comportements étranges des scripts et difficiles à comprendre. Pour résoudre le problème, il faut sourcer ce fichier de profile avant de lancer la commande. Par exemple : * * * * * . $HOME/.profile; /usr/bin/foo
RéférencesLes manuels Unix :
|
|||||||||||||
|
Copyright © 2000-2006 themanualpage.org - Ce site est soumis aux conditions décrites dans les licences GNU GPL et FDL. |
||||||||||||||