Purge de log automatique

Lorsque l’on génère des fichiers de log , il faut faire attention à ne remplir ses partitions disque. Le principe est de trouver les fichiers correspondants qui soient assez ancien et d’automatiquement les effacer.

On commence par créer un fichier de script en bash :

[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »nano%20%2Fhome%2Froot%2Fscripts%2Fpurge.sh »/]

Ensuite on insère les lignes de commandes suivantes :

[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »%23!%2Fbin%2Fbash%0Afind%20%2Fhome%2Froot%2Flog%2F%20-name%20’*.log’%20-mtime%20%2B7%20-exec%20rm%20%7B%7D%20%5C%3B%20″/]

Explication de la commande :

La commande find permet de chercher des fichiers suivant le nom définit par name où l’on uniquement les fichiers avec l’extension log.
Ensuite l’attribut -mtime +7 permet de chercher les fichiers qui sont agés de plus de 7 jours. Le dernier paramètre -exec permet d’exécuter une commande.
Dans ce cas, on supprime avec la commande rm l’ensemble des fichiers sélectionnés.

On rend le fichier de script exécutable

[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »chmod%20%2Bx%20%2Fhome%2Froot%2Fscripts%2Fpurge.sh »/]


Pour automatiser le fonctionnement, il faut insérer la commande dans le fichier crontab qui doit se trouver dans etc (sur debian). On lance un éditeur pour ouvrir le fichier crontab de la machine :

[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »nano%20%2Fetc%2Fcrontab »/]

Puis on insère la référence à notre script à la fin du fichier crontab :

[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »0%201%20*%20*%20*%20root%20%2Fhome%2Froot%2Fscripts%2Fpurge.sh »/]

0 minute
1 heure
* jour du mois
* mois
* jour de la semaine
root utilisateur
/home/root/scripts/purge.sh commande à exécuter

Le script va donc s’exécuter tous les jours à 1 heure du matin.