Procédure
Une grande partie l'administration du système peut être automatisé via des scripts Perl, ou de scripts shell exécutées à intervalles réguliers. Par exemple vous pourriez avoir un script pour vérifier que votre disque n'est pas plein qui fonctionne une fois par heure pour vous informer s'il y a des problèmes. Le mécanisme le plus commun pour la programmation des commandes sur les systèmes Linux se fait via le paquet cron.
En Debian, le paquet cron fait partie du système de base et est en cours d'exécution par défaut.
Cron, est fourni avec Debian, pour deux objectifs :
Pour faire fonctionner tâches du système par jour / semaine / mois.
Pour permettre aux utilisateurs de configurer leurs propres tâches planifiées.
Le paquet Cron crée automatiquement les répertoires suivants :
/etc/cron.d /etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
À part le premier qui est spécial, ces répertoires permettent de planifier des tâches pour tout le système d'une façon brute. N'importe quel script placé à l'intérieur d'eux fonctionnera à la fréquence que son nom suggère.
Par exemple si vous placez un script à l'intérieur de /etc/cron.daily il sera exécuté une fois par jour, chaque jour.
Ces répertoires sont utiles dans certains cas, mais si vous avez besoin d'ajuster plus les temps d'exécution, on peut faire en éditant le fichier /etc/crontab que nous expliquerons ensuite :
La façon normale que les gens utilisent cron est via la commande crontab. Cela vous permet de voir ou éditer votre fichier crontab, qui est un fichier par-utilisateur contenant des entrées décrivant les commandes pour exécuter et le temps pour les exécuter.
Pour montrer votre fichier vous exécutez la commande suivante :
crontab -l
L'utilisateur root peut visualiser le fichier crontab de n'importe quel utilisateur en ajoutant -u username, par exemple :
crontab -u utilisateur -l
Le format de ces fichiers est assez simple de comprendre. Chaque ligne est une collection de six champs séparés par des espaces.
Les champs sont :
Le numéro de minutes après l'heure (0 à 59)
L'heure dans temps militaire (24 heures) format (0 à 23)
Le jour du mois (1 à 31).
Le mois (1 à 12).
Le jour de la semaine (0 ou 7).
La commande pour exécuter.
Ils y ressembleraient :
* * * * * Command to be executed - - - - - | | | | | | | | | +-----> Jour de la semaine (0-7) | | | +-----------> Le mois (1 - 12) | | +-----------------> Le jour du mois (1 - 31) | +-----------------------> L'heure (0 - 23) +-----------------------------> Minutes (0 - 59)
(Chacun des cinq premiers champs ne contient que des chiffres, mais ils peuvent être laissés comme * pour désigner que n'importe quelle valeur est acceptable).
Maintenant que nous avons vu la structure nous devrions essayer d'exécuter deux ou trois exemples :
Éditez votre fichier de crontab :
crontab -e
Cela lancera votre éditeur par défaut sur votre fichier de crontab (le créant si nécessaire). Quand vous enregistrez le fichier et quittez votre éditeur, votre crontab sera installé dans le système sauf s'il a des erreurs.
L'éditeur par défaut est nano
Entrez le texte suivant:
0 * * * * /bin/ls > /var/log/ls.log
Quand vous avez sauvé le fichier et avez quitté votre éditeur vous verrez un message comme :
crontab: installing new crontab
Vous pouvez vérifier que le fichier contient ce que vous attendez avec:
crontab -l
Ici, nous l'avons dit à Cron d'exécuter la commande /bin/ls et de redirigér la sortie de la commande vers le fichier /var/log/ls.log à chaque fois que la minute est égale à 0, c'est-à-dire, il va lancer la commande à l'heure, toutes les heures.
D'autres exemples:
Exécutez la commande "nuit" à dix minutes après minuit, tous les jours
10 0 * * * /bin/nuit
Exécutez la commande "lundi", chaque lundi à 2 heures du matin
0 2 * * 1 /usr/local/bin/lundi
Si vous voulez faire tourner quelque chose de très régulièrement, vous pouvez utiliser une autre syntaxe: au lieu d'utiliser seulement les numéros, vous pouvez utiliser gammes ou ensembles.
Une série de chiffres indique que chaque point de cette gamme sera disponible, si vous utilisez la ligne suivante, vous exécutez une commande à 1 heures, 2 heures, 3 heures et 4 heures:
* 1-4 * * * /bin/commande
Un ensemble est similaire, constitué d'un ensemble de chiffres séparés par des virgules, chaque élément de la liste seront appariés. L'exemple précédent se présente comme suit en utilisant des séries:
* 1,2,3,4 * * * /bin/commande