impossibilite de detruire de trop nombreux fichiers

Le
none
Bonsoir,

Sur une distribution CentOS 44, une aplication a genere 1 700 000
fichiers (approximativement) avant que je la stoppe.

Ces fichiers ne font que 120 octets (pas de pb d'espaces disques) chacun
porte un nom relativement long : tata_titi_XXXXXXX_XXXXXXXXXX.inf.

Le file system est LVM (par defaut a l'install)

Le souci qui se presente est l'impossibilite de detruire ces fichiers.

sous le compte root, je n'ai pas de probleme de droits mais :
la commande rm tata_titi_*.inf plante.
la commande rm trf (le repertoire de ces fichiers) semble boucler (la
taille du repertoire ne varie pas).

Un reboot de la machine n'a pas fait evoluer la situation.

Quelles possibilites ai-je pour detruire ces fichiers ?

merci
jy
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier V
Le #1889347

Quelles possibilites ai-je pour detruire ces fichiers ?


rm -r -f ?

-r : détruit aussi tous les sous-répertoires
-f : aucune confirmation

Olivier V

Matthieu Moy
Le #1889346
none <""jy"@(none)"> writes:

la commande rm tata_titi_*.inf plante.


Logique : ça génère une ligne de commande de 1 700 000 arguments, et
le max acceptable sous Linux doit être de l'ordre de 500 (de mémoire).

rm -fr, comme indiqué dans l'autre message, devrait faire l'affaire.
Sinon, il faut un système qui appelle plusieurs fois « rm », pour un
nombre de fichiers raisonnables à chaque fois. Par exemple,

find . -name 'tata_titi_*.inf' -exec rm {} ;

Ou, avec GNU find et GNU xargs,

find . -name 'tata_titi_*.inf' -print0 | xargs -0 rm

--
Matthieu

Matthieu Moy
Le #1889345
"Mihamina Rakotomandimby (R12y)"
Est-ce qu'avec une boucle for du genre
for FICHIER in (ls tata_titi_*.inf); do rm -rf $FICHIER; done


UUOL !

(et « $ » manquant, mais bon ;-) )

(et sinon, y'a un sigle connu pour « Useless Use Of -r ? »)

--
Matthieu

none
Le #1889344
Matthieu Moy wrote:
none <""jy"@(none)"> writes:

la commande rm tata_titi_*.inf plante.


Logique : ça génère une ligne de commande de 1 700 000 arguments, et
le max acceptable sous Linux doit être de l'ordre de 500 (de mémoire).
de la a faire planter rm (segmentation) ?

sinon je suis d'accord sur la longueur (1024 non ?), mais c'est pour
cela que j'avais note la 2ieme commande : rm trf (trf est le repertoire
) qui n'a rien fait (j'ai oublie le -r dans le mail sorry)

rm -fr, comme indiqué dans l'autre message, devrait faire l'affaire.
Sinon, il faut un système qui appelle plusieurs fois « rm », pour un
nombre de fichiers raisonnables à chaque fois. Par exemple,

find . -name 'tata_titi_*.inf' -exec rm {} ;

Ou, avec GNU find et GNU xargs,

find . -name 'tata_titi_*.inf' -print0 | xargs -0 rm



je vais tente cela. Je n'y crois pas penchant plus pour une corruption... .

En tout cas grand merci a tous deux

jy


Mihamina Rakotomandimby (R12y)
Le #1889343
none wrote:

Sur une distribution CentOS 44, une aplication a genere 1 700 000
fichiers (approximativement) avant que je la stoppe.
[...]

la commande rm tata_titi_*.inf plante.


Le '*' fait qu'il remplace tata_titi_*.inf par une liste de tous les
fichiers ou repertoires qui remplissent cette condition.
La liste serait donc de.... 1700000 nom de fichiers.
Ca fait une ligne de commande trop longue.

Est-ce qu'avec une boucle for du genre
for FICHIER in (ls tata_titi_*.inf); do rm -rf $FICHIER; done
ça peut fonctionner? (le 'ls' se prendrait aussi les 1700000 arguments...)

none
Le #1889342
Mihamina Rakotomandimby (R12y) wrote:
none wrote:

Sur une distribution CentOS 44, une aplication a genere 1 700 000
fichiers (approximativement) avant que je la stoppe.
[...]

la commande rm tata_titi_*.inf plante.


Le '*' fait qu'il remplace tata_titi_*.inf par une liste de tous les
fichiers ou repertoires qui remplissent cette condition.
La liste serait donc de.... 1700000 nom de fichiers.
Ca fait une ligne de commande trop longue.

Est-ce qu'avec une boucle for du genre
for FICHIER in (ls tata_titi_*.inf); do rm -rf $FICHIER; done
ça peut fonctionner? (le 'ls' se prendrait aussi les 1700000 arguments...)




ca semble pouvoir fonctionner

for i in `ls tata*`; do ...

il me semble m'etre heurter par le passe a la limite de longueur en csh.
Le bash ne semble pas poser de probleme.

merci

jy


Michel Tatoute
Le #1889341
none wrote:

Bonsoir,

Sur une distribution CentOS 44, une aplication a genere 1 700 000
fichiers (approximativement) avant que je la stoppe.

Ces fichiers ne font que 120 octets (pas de pb d'espaces disques) chacun
porte un nom relativement long : tata_titi_XXXXXXX_XXXXXXXXXX.inf.

Le file system est LVM (par defaut a l'install)

Le souci qui se presente est l'impossibilite de detruire ces fichiers.

sous le compte root, je n'ai pas de probleme de droits mais :
la commande rm tata_titi_*.inf plante.
la commande rm trf (le repertoire de ces fichiers) semble boucler (la
taille du repertoire ne varie pas).

Un reboot de la machine n'a pas fait evoluer la situation.




Quelles possibilites ai-je pour detruire ces fichiers ?



$ find . -name 'tata_titi_*.inf' -type f -print0 | xargs -0 rm -f

merci
jy


de rien,
Michel.

Thierry Boudet
Le #1889338
On 2007-05-31, none <""> wrote:

Sur une distribution CentOS 44, une aplication a genere 1 700 000
fichiers (approximativement) avant que je la stoppe.


Wouaou!

Le souci qui se presente est l'impossibilite de detruire ces fichiers.


Je ne pense pas que ce soit impossible de les détruire,
c'est juste difficile de demander aux outils de le faire.

sous le compte root, je n'ai pas de probleme de droits mais :
la commande rm tata_titi_*.inf plante.


"Plante" est un terme trop vague. Dire quel est le message
d'erreur exact permet à tout le monde de se pencher sur
ton souci.

la commande rm trf (le repertoire de ces fichiers) semble boucler (la
taille du repertoire ne varie pas).


Essaye (sans te tromper, hein, sinon ça casse tout :)

# rm -rf /chemin/vers/le/repertoire

Un reboot de la machine n'a pas fait evoluer la situation.


Sale réflexe de kroteux.

Quelles possibilites ai-je pour detruire ces fichiers ?


Bazoooookkkaaaaa ?


--
Impedance is futile, you will be simulated into the triode of the
Borg. -- Robert Casey, Irish patriot

Thierry Boudet
Le #1889337
On 2007-05-31, Matthieu Moy

(et sinon, y'a un sigle connu pour « Useless Use Of -r ? »)

Oui: "All Your Files Are Belong To Us."


--
D'un côté, les appels au bios et de l'autre, ceux au noyau Linux.
Si une application a été mal portée dans Linux, il se peut qu'il reste des
appels au bios, quoique ce ne soit pas très habituel sans doute.
--{ DB, in fcol.configuration }--

Fabien LE LEZ
Le #1889336
On Thu, 31 May 2007 22:19:45 +0200, none <""jy"@(none)">:

la commande rm tata_titi_*.inf plante.


M'est avis qu'elle ne plante pas, mais qu'elle t'indique un message on
ne peut plus précis, du style "argument line too long".
Le couple find/xargs est ton ami.

Publicité
Poster une réponse
Anonyme