Tâches plannifiées : cron

8 février 2007

Télécharger en PDF

Table des matières

I.Introduction 1

II.Scripts Cron 1

1Exemple global : Recherche de fichier et envoie du résultat par mail 1

2Exemple pour utilisateur : suppression des fichiers temporaires 2

3L'exemple de logrotate 2

III.Bibliographie 2


I.Introduction


Le démon crond est utilisé pour effectuer certaines tâches à des moments bien précis (à condition que la machine reste allumée bien évidemment). Il y a deux niveaux de configuration de ce démon :


Cron exécute les scripts qui se trouvent dans les répertoires cron.hourly, cron.daily, cron.weekly et cron.monthly. C'est le script run-parts qui permet d'exécuter tous les scripts d'un dossier.


II.Scripts Cron


Note sur les scripts crontab :

Plusieurs variables d'environnement sont automatiquement configurées par le démon cron(8). SHELL est rempli avec /bin/sh, LOGNAME et HOME sont configurées à partir de la ligne de /etc/passwd correspondant au propriétaire de la crontab. HOME et SHELL peuvent être surchargés par des affectations explicites dans la crontab, LOGNAME non.

Si la variable MAILTO est affectée dans le script, un mail sera envoyer à l'utilisateur inscrit dans la variable avec le résultat du script


1Exemple global : Recherche de fichier et envoie du résultat par mail


Voici une tache système quotidienne pour l'utilisateur root permettant de rechercher tous les fichiers ayant le setuid bit de positionné et d'envoyer le résultat par mail au root.

On crée un script dans le répertoire /etc/cron.daily :

#!/bin/bash

MAILTO=root

find / -perm -4000 -print 2>/dev/null


On peut exécuter un script global à intervalle régulier en fonction du dossier dans lequel se trouve le script :

2Exemple pour utilisateur : suppression des fichiers temporaires


Voici une tâche utilisateur quotidienne pour un utilisateur qui supprimera tous les fichiers lui appartenant dans le répertoire /tmp.

On crée un script pour la tâche à réaliser :

find /tmp -uid 608 -exec rm {} \;

On exécute crontab -e en étant connecté en tant que toto et on ajoute la ligne (vi) :

#exec tous les jours à midi

0 12 * * * /home/utilisateur/rmtmp


Chaque ligne du fichier crontab de chaque utilisateur a le format suivant

<minute> <heure> <jour mois> <mois> <jour semaine> <commande>


Chacun des champs précédents peuvent contenir une liste à virgules des valeurs suivantes :

champs valeurs autorisées

----- --------------

minute 0-59

heure 0-23

jour du mois 0-31

mois 0-12

jour de semaine 0-7 (Dimanche à Samedi)


3L'exemple de logrotate


En rapport avec syslogd mais utilisant surtout cron, on remarquera que dans tous les répertoires de logs, il y a des fichiers .0, .1...qui contiennent les logs anciens. Ces fichiers sont générés par logrotate dans le but d'alléger les logs des programmes et de supprimer les logs les plus anciens.


III.Bibliographie

Cron - Wikipédia

Automating Tasks with cron services

Cron

sharevb