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

Un livre de Wikibooks.
Aller à : Navigation, rechercher
Le système d'exploitation GNU-Linux
Tux.svg
Plan
  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
    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
  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 mails Postfix
    8. Le serveur de fichiers FTP
    9. La base de données Mysql
    10. Le serveur Web Apache
    11. Les annuaires LDAP
    12. L'outil d'administration Webmin
    13. Le routage avec iptables et route
    14. 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
Modifier ce modèle

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

Sections

[modifier] Configuration de cron

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 )
 #

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 3 premieres 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.


[modifier] Exemples

  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.

[modifier] Répertoires de cron

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 repertoire choisi pour qu'il s'exécute.

Dans le même ordre d'idée, on peut rajouter des repertoires particuliers reliés à des fonctions spécifiques d'une entreprise ou d'une personne, pour executer des cron. Il suffit de mettre des fichiers contenants des lignes cron dans le repertoire /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

[modifier] Les crontabs utilisateurs

Un utilisateur peut progammer 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.

[modifier] Droits d'accès

Nuvola apps korganizer.svg
À faire...

parler de cron.allow et cron.deny



[modifier] L'horloge Linux

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

[modifier] Réglage manuel

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.

 #sudo 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

[modifier] Réglage automatique (NTP)

Nuvola apps korganizer.svg
À faire...

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

Outils personnels
Espaces de noms

Variantes
Actions
Bibliothèque
Navigation
Aide
Imprimer / exporter
Boîte à outils