Le système d'exploitation GNU-Linux/L'ordonnanceur de travaux cron

Un livre de Wikilivres.
Aller à : navigation, rechercher


  1. Qu'est-ce qu'un système d'exploitation ?
  2. Unix et Linux
  3. Partitionnement du disque
  4. Installation
    1. Installer Debian via le réseau
  5. Utilisateur Unix, l'interface console
    1. Le login
    2. Commandes de base
    3. L'aide en ligne man
    4. L'éditeur de texte vi
    5. Les shells
    6. La complétion
    7. Les jokers
    8. Les répertoires importants
    9. Redirection des entrées/sorties
    10. Invoquer un programme en tâche de fond
    11. Propriétaires et droits d'accès
    12. Processus
    13. Locale
  6. Administration du système
    1. Configuration du réseau
    2. Les utilisateurs et groupes
    3. Le processus d'initialisation
    4. Les systèmes de fichiers
    5. Le système virtuel /proc
    6. Les périphériques /dev
    7. L'ordonnanceur de travaux cron
    8. Le backup : tar et gzip
    9. ghost avec partimage
    10. sauvegarde de fichiers avec rsync
    11. Les fichiers journaux syslog
    12. Installation de nouveaux logiciels
    13. Le noyau Linux et les modules
    14. Autres commandes utiles
    15. Installation RAID1 logiciel + LVM + XFS
    16. Scripts de surveillance
    17. Réseaux sans fil
  7. Administration des services réseaux
    1. Le serveur de noms BIND
    2. Le serveur de configuration réseau DHCP
    3. Le serveur de shell distant SSH
    4. Le partage de fichiers Samba
    5. Le partage de fichiers NFS
    6. Le serveur d'impression CUPS
    7. Le serveur de fichiers FTP
    8. Le serveur Web Apache
    9. La base de données MySQL
    10. Le serveur de mails Postfix
    11. Les annuaires LDAP
    12. L'outil d'administration Webmin
    13. La supervision
  8. Sécurisation d'un serveur Linux
    1. Installation d'un service en mode chroot
    2. Protection avec iptables
  9. Médiagraphie
  10. Auteurs


cron est un daemon qui permet de programmer des tâches répétitives.

Configuration de cron[modifier | modifier le wikicode]

Le fichier de configuration de cron est /etc/crontab, éditable uniquement par le root. Exemple :

  # /etc/crontab: system-wide crontab
  # Unlike any other crontab you don't have to run the `crontab'
  # command to install the new version when you edit this file
  # and files in /etc/cron.d. These files also have username fields,
  # that none of the other crontabs do.
  
  SHELL=/bin/sh
  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  
  # m h dom mon dow user  command
  17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
  25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
  47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
  52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
  #

Si on veut recevoir un mail à chaque échec d'une tâche, ajouter :

MAILTO=Mon@Email.com

Voici la syntaxe de la programmation de la fréquence de répétition :

m h dom mon dow user command
code signification valeur ou note
m minutes 0 à 60
h heure 0 à 23
dom day of month / jour du mois 1 à 31
mon month / mois 1 à 12
dow day of week / jour de la semaine 0 à 7, 0= dimanche, 7= dimanche, on peut aussi mettre les trois premières lettres du jour en anglais
user user / utilisateur utilisateur appelant la commande
command command / commande commande appelée par l'évènement

Tous les champs peuvent être remplacés par "*" si on souhaite toutes les valeurs correspondantes.

Notation avancée :

On peut définir des valeurs multiples ou des plages de valeurs pour les heures, les jours etc... :

Par exemple, au lieu de faire plusieurs lignes de cron pour plusieurs fois le même évènement, on peut mettre plusieurs valeurs séparées par ","

On peut aussi indiquer une plage de valeur dont les limites sont séparées par "-".

De même, on peut définir des fréquences avec "/". Par exemples, toutes les 2h s'écrira */2 dans la deuxième colonne.

Exemples[modifier | modifier le wikicode]

  0 * 7 3 * root beep

L'utilisateur root appelle la commande beep, toutes les heures à 0 minute le 7 mars.

  15,45 8 * * * root beep

L'utilisateur root appelle la commande beep, à 8h15 et 8h45 tous les jours.

  0 8-18 * * * toto beep

L'utilisateur toto appelle la commande beep toutes les heures de 8h à 18h tous les jours.

  0 12 * * mon,wed,fri titi beep

L'utilisateur titi appelle la commande beep à midi tous les lundi, mercredi et vendredi.

  0 */2 * * 1-5 tata beep

L'utilisateur tata appelle la commande beep toutes les 2h du lundi au vendredi.

Répertoires de cron[modifier | modifier le wikicode]

En plus de la commande cron, il existe des répertoires spécifiques pour définir des commandes cron à fréquences précises. Ces répertoires particuliers sont localisés dans le repertoire /etc

Titre du tableau
cron.hourly toutes les heures
cron.daily tous les jours
cron.weekly toutes les semaines
cron.monthly tous les mois

Il suffit de mettre un fichier script exécutable dans le répertoire choisi pour qu'il s'exécute.

Dans le même ordre d'idée, on peut rajouter des répertoires particuliers reliés à des fonctions spécifiques d'une entreprise ou d'une personne, pour exécuter des cron. Il suffit de mettre des fichiers contenants des lignes cron dans le répertoire /etc/cron.d/.

exemple : /etc/cron.d/comptabilite


Une fois le crontab modifié, il faut lui faire prendre en compte les modifications. Pour cela, on dispose de trois méthodes :

 # kill -1 <PID du processus cron>

ou

 # killall -1 cron

ou

 # /etc/init.d/cron restart

Les crontabs utilisateurs[modifier | modifier le wikicode]

Un utilisateur peut programmer ses propres crontabs. Ces crontabs sont stockés dans /var/spool/cron/crontabs/<login>

Titre du tableau
crontab -l donne la liste des crontabs actifs
crontab -e permet d'éditer son propre crontab

En utilisant la commande crontab , il n'est pas nécessaire de relancer le daemon cron pour que les modifications soient prises en compte.

Droits d'accès[modifier | modifier le wikicode]

link={{{link}}}À faire...

parler de cron.allow et cron.deny



L'horloge Linux[modifier | modifier le wikicode]

Avant de planifier ses opérations il est primordial de bien s'assurer que les informations de temps système sont correctes.

Réglage manuel[modifier | modifier le wikicode]

Pour connaître la date actuelle on utilise la commande date :

 # date
 mer aoû 19 12:31:00 CEST 2009

Cette même commande accepte des arguments pour forcer la mise à jour de l'horloge système au format "MMJJHHmmYYYY". Il faut disposer des droits super utilisateur pour cette action.

 # date 081912372009
 Wed Aug 19 12:37:00 CEST 2009

Enfin, il existe deux horloges dans le système, l'horloge matérielle et l'horloge logicielle. Pour synchroniser ces deux horloges utilisez la commande hwclock.

 # hwclock --systohc  //initialise l'heure matérielle à partir de l'horloge système
 # hwclock --hctosys  //initialise l'heure système à partir de l'horloge matérielle

Réglage automatique (NTP)[modifier | modifier le wikicode]

link={{{link}}}À faire...

Expliquer le fonctionnement du système NTP et les commandes utiles

link={{{link}}}Attention !

Lors du changement d'heure hiver/été où on passe de 2 h à 3 h, les tâches programmées entre 2 h 00 et 2 h 59 ne seront donc pas exécutées. À l'inverse, lors du changement d'heure été/hiver, ces mêmes tâches seront exécutées deux fois (à 3 h, il est encore 2 h). Afin d'éviter ce désagrément, la plupart des systèmes Unix sont configurés pour utiliser le temps universel coordonné (UTC), qui n'est pas sujet à ces règles de changement d'heure.