Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

impossibilite de detruire de trop nombreux fichiers

15 réponses
Avatar
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

10 réponses

1 2
Avatar
Olivier V

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

Avatar
Matthieu Moy
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

Avatar
Matthieu Moy
"Mihamina Rakotomandimby (R12y)" writes:

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

Avatar
none
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


Avatar
Mihamina Rakotomandimby (R12y)
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...)

Avatar
none
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


Avatar
Michel Tatoute
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.

Avatar
Thierry Boudet
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

Avatar
Thierry Boudet
On 2007-05-31, Matthieu Moy wrote:

(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 }--

Avatar
Fabien LE LEZ
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.

1 2