|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre à l'essai
![]() Inscription : août 2004 Messages : 79 ![]() |
Voila je fais un script de purge de log lorsqu'ils ont plus de 30 jours :
Citation:
find /appli/apache/*/logs/* -mtime +30 -type f | xargs rm j'avais fait le plus dur étant donné l'ancienneté de mes connaissances dans le domaine du script shell. Mais il m'apparait une erreur dans le cas où il n'y a pas de fichier de log a purger. Je pensais qu'il passerai dans le else mais en fait il reste dans la premiere alternative alors que le retour est bien 0. Quelqu'un aurait il une explication, voir une solution? |
|
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() Inscription : décembre 2006 Messages : 689 ![]() |
wc retourne certainement 0 pour dire qu'il n'y a pas d'erreur non ?
Il faudrait plutot évaluer la chaine que wc retourne sur stdout ? Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
la methode n'est pas terrible car pour une raison X ou Y un des code retour peut se perdre en route que ce soit dans le pipe ou dans le xargs ou meme dans le rm ou encore dans le find
donc ni l'un ni l'autre il faut voir le code retour de find qui lui meme reçoit et analyse le code retour de rm ce qui permet de n'avoir qu'un seul et unique code retour de bout en bout jusqu'à la fin de l'execution du find dans lequel est imbriqué le rm ce qui donne en clair par exemple : Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : mars 2002 Messages : 457 ![]() |
Salut.
Parfaitement d'accord avec frp31, il faut faire attention à ce que les codes de retour ne se perdent pas en route. @+ Rémi |
|
|
00
|
|
|
#5 | ||
|
Membre à l'essai
![]() Inscription : août 2004 Messages : 79 ![]() |
Merci pour votre aide mais il me reste des soucis :
1) -exec rm {} ne fonctionne pas, j'ai pour erreur :find: Paramètre manquant pour « -exec ». Ce soucis est pallié pour l'instant par l'utilisation de | xargs rm après le find 2) Mon but est de gérer les codes retour mais avant tout de récupérer la sortie de wc -l afin de savoir si je lance la commande rm derrière (en fait s'il n'y a aucun fichier à supprimer, j'obtiens un message d'erreur "il manque une opérande à la commande rm", normal j'appel rm sans argument). Pour éviter cette erreur affiché je compte d'abord les fichiers à effacer : Citation:
Citation:
|
||
|
|
00
|
|
|
#6 | ||
|
Membre à l'essai
![]() Inscription : août 2004 Messages : 79 ![]() |
Finalement la réponse de frp31 était la bonne, je n'ai pas compris la diff entre mon execution d'hier et celle d'aujourd'hui. Globalement mon utilisation du find n'était pas tres esthétique :
Code :
find /appli/*/data/logs/* -mtime +33 -type f | xargs rm Code :
find /appli/*/data/logs/ -type f -name "*.*" -mtime +31 -exec rm {} \; Code :
|
||
|
|
00
|
|
|
#7 | ||||
|
Membre Expert
![]() |
Attention
Code :
--> Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com