|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
Bonjour,
je ne sais pas si je suis dans la bonne partie. J'ai modifié le fichier syslog.conf afin qu'il puisse garder pendant un an les log du système principalement pour les log de mail donc j'aimerais concevoir un script permettant de supprimer les log supérieurs à 80 jours concernant "syslog" situé dans le répertoire /var/log/. J'ai pensé faire un système de boucle for mais je ne pense pas que cela va marchait. D'après mes cours, une boucle for est de la forme : Code :
Cordialement. |
||
|
|
00
|
|
|
#2 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 497 ![]() |
Bonjour,
Pour ce qui est du choix du forum, pas de soucis :-) Pour ce qui est du script, il faut que tu saches qu'il existe déjà une commande qui parcourt un ou plusieurs répertoire à la recherche de fichiers : find Attention toutefois, car cette commande est complexe à utiliser - mais très puissante en contre-partie. Je te conseil donc de bien lire le man de la commande find. Une fois que tu l'auras lu, fais des essais pour voir comment tu pourrais lister tous tes fichiers. Une fois que tu auras ca, cherche à voir comment tu pourrais te limiter à l'affichage des fichiers que tu souhaites supprimer (ceux qui ont plus de X jours) ... N'hésites pas à poser des questions si tu bloques sur un point. Bon courage, Gangsoleil |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
Merci pour le lien du man de la commande find ^^
je pense avoir réussi trouver comment faire : Code :
Cordialement. |
||
|
|
00
|
|
|
#4 | |||||
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 497 ![]() |
Citation:
En fait, l'option -exec n'est pas forcément la plus simple, donc voici deux-trois infos pour l'utiliser : Pour indiquer l'endroit où tu veux que le nom des fichiers soit mis, il faut utiliser "{}". Ensuite, pour indiquer que ta commande est finie, il faut le faire via "\;". Le '\' est là pour indiquer que ce caractère doit être interprété par la commande find, et non par le shell. Ce qui nous donne : Code :
Rechercher tous les fichiers contenant la chaine toto : Rechercher tous les fichiers texte de mon répertoire, et les concaténer dans /tmp/toto.txt : Code :
find ~ -name "*.txt" -exec cat {} >> /tmp/toto.txt \; |
|||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
Oui cela est plus clair
Je te remercie pour tes explications |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
Code :
find /var/log/syslog* -mtime +80 -exec rm -f {} \; quand a son execution reguliere le plus simple est de planifier cette commande dans le crontab plustot que de faire un script. ligne de crontab : Code :
0 0 * * 1 find /var/log/syslog* -mtime +80 -exec rm -f {} \; |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 4 ![]() |
C'est vrai que pour mon utilisation c'est plus simple de le planifier.
Je te remercie pour ton conseil |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com