Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2008, 18h00   #1
Invité de passage
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 3
Points : 3
Par défaut vider une liste de fichiers log

bonjour,

je cherche à faire ceci et je cale !

Vider (avec par exemple echo > fichier.log) , une liste de fichiers *.log .

J'ai fait plusieurs tentatives avec find ... | xargs ... .

Je ne connais pas la liste des fichiers à l'avance. L'idée est de vider par exemple tous les fichiers log vieux d'une semaine.

Mais sans succès.

Quelqu'un a-t-il une idée ? Merci d'avance

Philippe
beheretxea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 20h26   #2
Membre chevronné

 
Avatar de D[r]eadLock
 
Inscription : mai 2002
Messages : 504
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : mai 2002
Messages : 504
Points : 622
Points : 622
Quels paramètres as-tu utilisé pour find ??
Avec un
Code :
find . -name "*.log -mtime +7
ça devrait le faire (cf. man find)
__________________
1)Avant de poster, merci de lire les règles. 2)Utiliser [code] [/code] pour quoter le code ! 3)Conseils pour le forum C [a lire en entier!]
D[r]eadLock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 22h50   #3
Invité de passage
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 3
Points : 3
Par défaut utiliser echo > dans le find ...

je fais ceci

find / -name "*.log" -mtime -7 -print0 | xargs 0 ???? mais après je ne sais pas enchaîner avec un "echo > ..."
beheretxea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 23h45   #4
Membre chevronné

 
Avatar de D[r]eadLock
 
Inscription : mai 2002
Messages : 504
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : mai 2002
Messages : 504
Points : 622
Points : 622
Code :
find . -name "*.log" -mtime -7 -exec rm -f {} \;
Pour carrément effacer le fichier (mea culpa pour l +7 au lieu du -7)
C'est vrai que pour les redirections dans un find sont plutôt pénibles.
__________________
1)Avant de poster, merci de lire les règles. 2)Utiliser [code] [/code] pour quoter le code ! 3)Conseils pour le forum C [a lire en entier!]
D[r]eadLock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 09h28   #5
Invité de passage
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 3
Points : 3
Par défaut vider le fichier et non pas le supprimer

Merci pour votre réponse, mais justement je souhaite remplacer la commande de suppression par une commande de "remise à vide" du fichier.

En effet find .... -exec rm -f {}\; permet de supprimer tous les fichiers ...

Mais mes fichiers logs ne doivent pas être supprimés car ils sont utilisés par des processus ...

Il s'agit donc de remplacer le fameux -exec rm -f {}\; par quelque chose comme echo > ... .

Avez-vous une idée ?

Philippe
beheretxea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 10h43   #6
Membre actif
 
Avatar de lu6fer
 
Inscription : avril 2008
Messages : 141
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 141
Points : 159
Points : 159
lu6fer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 11h02   #7
Invité de passage
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 3
Points : 3
j'ai testé mais ...

find . -name "AK*.log" -exec echo -n "" > {}
find: Paramètre manquant pour `-exec'


Je précise que je suis un utilisateur occasionnel d'unix
beheretxea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 13h43   #8
Membre actif
 
Avatar de lu6fer
 
Inscription : avril 2008
Messages : 141
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 141
Points : 159
Points : 159
Code :
find ./ -name "*.log"-exec echo -n "" > {} \;
ou
Code :
1
2
3
4
for i in ./*.log
do
   echo -n "" > $i
done
apres pour la gestion des log de plus de 7 jours, soit tu utilises -mtime -7 avec find, la il te trouvera tout les log de 7 jour et plus et mettra la chaine de caractere vide dans le log, soit tu utilise un des 2 solutions du dessus coupler a une crontab qui tourne 1 fois par semaine.
lu6fer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 09h26   #9
Invité de passage
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 3
Points : 3
Par défaut une possibilité ...

Merci,

mais le find dans mon environnement (redhat) ne fonctionne pas.

Suite à cette discussion, j'ai l'idée de faire ceci :

find <REPERTOIRE> -name "*.log" -mtime -7 -print > /tmp/A.txt
while read i
do
echo > $i
done < /tmp/A.txt

faut voir la doc sur le paramètre -mtime ...

Cela fonctionne dans mon environnement.

Merci à tous.

Voilà

Philippe
beheretxea est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h33.


 
 
 
 
Partenaires

Hébergement Web