Programmer l'exécution automatique de programmes Carole Williams, carole@redhat.com, traduction, ara­ man@cyber-networks.fr Vous pouvez configurer le lancement à des intervalles répétitifs de processus sans intervention humaine. Des exemples de ces processus peuvent être des analyseurs de log, des outils de monitorage du réseau ou de la sécurité, des outils de maintenance des systèmes de fichiers,.... Pour vous éviter d'avoir à lancer ces tâches manuelle­ ment, le démon cron peut être configuré pour les lancer automatique­ ment à des heures que vous indiquez. Chaque processus tournera avec les droits de l'utilisateur associé à la tâche. ______________________________________________________________________ Table des matières 1. Activer ou désactiver une entrée 2. Configurer la répétition d'une commande 3. Configurer quand la commande doit être exécutée 4. Exemples ______________________________________________________________________ 11.. AAccttiivveerr oouu ddééssaaccttiivveerr uunnee eennttrrééee Par défaut, les nouvelles entrées sont actives. Déselectionnez la case "Cette entrée est active" si vous voulez suspendre l'activité d'un processus. Vous pouvez aussi effacer la tâche mais si vous souhaitez la réutiliser dans le futur, la désactivation est plus appropriée. 22.. CCoonnffiigguurreerr llaa rrééppééttiittiioonn dd''uunnee ccoommmmaannddee N'importe quelle commande valide peut être tapée dans la boite de commande. Vous pouvez vouloir entrer le chemin complet de la commande, pour être absolument sur(e) que la commande soit trouvée. Si la commande est très longue et complexe, vous pouvez plutôt créer un script de commande pour lancer la commande et ensuite taper la commande pour éxécuter le script shell à la place, comme dans l'exemple suivant : sh nom de votre script 33.. CCoonnffiigguurreerr qquuaanndd llaa ccoommmmaannddee ddooiitt êêttrree eexxééccuuttééee Vous devez spécifier exactement quand vous voulez exécuter la commande. Le démon cron se réveille toutes les minutes et vérifie pour voir si un processus doit démarrer. Le processus ne sera exécuter que lorsque tous les champs sont vrais (à l'exeption des champs jours du mois et de la semaine). Les champs jours du mois et de la semaine spécifient tous les deux des jours spécifiques pour l'exécution d'un processus. Si aucun de ces deux champs n'est *, alors le processus sera exécuté si l'un des deux champs est vrai. Si l'un des deux champs est vrai, alors le processus tournera quand l'autre champ est vrai. Si les deux champs sont *, le processus tournera chaque jour. Si vous avez besoin d'ajuster l'heure système dans le futur (par exemple, lors d'un changement d'heure), les travaux prévus durant la période omise ne seront pas exécutés. Au contraire, si l'heure est retardée, un travail pourra être exécuté deux fois. Si vous ajoutez un processus récurrent sur un serveur déjà chargé, prenez en compte quand les autres processus sont programmés. Il vaut mieux programmer les gros travaux lorsque le système n'est pas trop chargé. Pour la plupart des systèmes, cela serait normalement la nuit mais cela dépend de votre système et de sa configuration. Un astérisque (*) indique que le processus doit tourner à chaque période (par exemple, un * dans le champ "Mois" indique que le processus tournera chaque mois). Un tiret (-) indique que le travail doit être exécuté durant une certaine période, en incluant les extrémités. Par exemple, 2-5 pour le mois indique que le travail sera exécuté en Février, Mars, Avril et Mai. La virgule (,) doit être utilisée pour séparer différentes entrées pour une période donnée. Par exemple, 5,6,11 dans le champ mois indique que le travail sera exécuté en Mai, Juin et Novembre. Les virgules peuvent aussi séparer des périodes de temps (par exemple, 1-3,6-9 dans le champ mois indique de Janvier à Mars et de Juin à Septembre). Une plage de valeurs, ou une *, suivie(s) d'un / et d'un nombre sont utilisés pour définir un pas dans la plage. Un 2-10/2 dans le champ mois indique tous les deux mois de Février jusqu'à Octobre (en d'autres mots: Février, Avril, Juin, Aout et Octobre). Un */5 dans la rubrique jour signifie d'éxécuter le travail tous les 5 jours du(des) mois approprié(s) : Le 1er, le 6eme, le 11eme et ainsi de suite. MMooiiss Janvier est 1, Février est 2, ...Décembre est 12. Vous pouvez aussi utilisez les trois premières lettres du mois (en anglais): jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov et dec. Exemples : 1-6 signifie chaque mois de Janvier à Juin inclus. 1,6,12 signifie Janvier, Juin et Décembre. 1-12/3 ou */3 veulent chacun dire tous les trois mois en commancant par Janvier (soit Janvier, Avril, Juillet et Octobre). 1-12 ou * signifie chaque mois. JJoouurrss dduu mmooiiss Les jours du mois sont du 1er au 31 (souvenez vous que les mois peuvent ne pas avoir un 29, 30 ou 31. Aussi si vous programmez un travail tous les 31, il ne sera exécuté que certains mois). Exemples: 1,15,28 veut dire le 1er, le 15 et le 28 du mois. 2-10 veut dire du deuxième au dixième jour du mois, en incluant le deuxième et le dixième. 1-31 ou * signifie chaque jour du mois. Si les jours de la semaine sont aussi *, alors le processus tournera chaque jour. Si 1-31 ou * est dans le champ jour et un valeur plus restrictive (autre que *) est dans le champ jour de la semaine, alors le travail ne sera exécuté que les jours où ce champ est vrai. JJoouurrss ddee llaa sseemmaaiinnee Dimanche est 0, Lundi est 1, Mardi est 2...Samedi est 6. Autrement, vous pouvez utiliser les trois premières lettres du jour (en anglais): sun, mon, tue, web, thu, fri, sat. Exemples: 2,4,6 signifie Mardi, Jeudi et Samedi. 0-6 ou * signifie chaque jour de la semaine. Si les jours du mois sont positionnés à *, alors le travail sera exécuté chaque jour. 0-6 ou * accompagné d'un valeur plus restrictive (autre que *) dans le champ mois indique que le travail tournera tous les jours où le champ mois est vrai. HHeeuurreess Les heures du jour vont de 0 (minuit) à 23. Exemples : 0,1,2 veut dire minuit, une et deux heures du matin. 0-23/2 et */2 veulent dire 0000, 0200, 0400....2200. MMiinnuutteess Les minutes d'une heure vont de 0 à 59. Exemples: 0-30 veut dire l'heure pile et à la demi. 0-59/5 et */5 veut dire toutes les 5 minutes en commencant à l'heure pile (0,5,10....) 44.. EExxeemmpplleess Mois * Jours du mois * Jours de la semaine * Heures 0 Minutes 5 Cette configuration ferais tourner un processus chaque jour à minuit 5. Mois * Jours du mois * Jours de la semaine 0,3,6 Heures 2 Minutes 10 Cette configuration lancerais le programme chaque Dimanche, Mercredi et Samedi à 2H10 du matin. Mois * Jours du mois 1,15,31 Jours de la semaine 2 Heures 1 Minutes 10 Cette configuration fait tourner un programme chaque mois, les 1er, 15 et 31 et chaque mardi à 1H10. Vous n'aurez surement évidemment pas à programmer de telles combinaisons, mais cet exemple montre comment les jours du mois sont combinés avec ceux de la semaine lorsqu'aucun n'est *.