J'ai un dossier avec 266778 sous-dossiers. Comment puis-je le supprimer?
j'ai essayé
cd ~/.local/share/Trash/
sudo rm -rf *
mais cela prend beaucoup de temps. Après 1 minute 25 secondes en temps réel et 0,072 secondes de temps utilisateur, il n'a supprimé que 2500 dossiers. De cette façon, il faudra plus de deux heures pour supprimer ce dossier.
Existe-t-il un moyen plus rapide de supprimer ce dossier? Pourquoi y a-t-il une si grande différence entre le temps utilisateur et le temps réel?
real 1m25.474s
user 0m0.072s
sys 0m28.142s
J'utilise Linux 2.6.32 (Ubuntu 10.04.4 LTS).
filesystems
rm
Martin Thoma
la source
la source
Réponses:
Si votre version de "find" implémente la sous-commande -delete, vous pouvez essayer
Dans ce cas:
Certaines commandes, comme rm, effectuent la plupart de leur travail dans le noyau. Dans les routines du système de fichiers, pour être exact. Le temps passé à effectuer des appels système est pris en compte de cette manière. Ainsi, bien que votre commande "rm" s'exécute pendant une longue période, elle ne fait pas beaucoup de travail dans l'espace utilisateur - les appels système effectuent la majeure partie du travail.
la source
find ~/.local/share/Trash/*/ -delete
(bien sûr, cela supprimera également les fichiers (et les répertoires) dans l'un de ces Corbeille / * / subdirs ainsi)time
find directory -delete
vraiment plus rapide querm -rf directory
? Après tout, ils effectuent le même travail et il n'y a pas deux façons de le faire.Cela dépend de votre définition du jeûne . Les réponses déjà ici donnent une bonne solution pour supprimer réellement les répertoires du système de fichiers, mais si ce dont vous avez vraiment besoin est de libérer le nom du répertoire le plus rapidement possible, un changement de nom sur le même système de fichiers est instantané:
Techniquement, c'est de la triche puisque je n'ai pas accéléré la suppression, mais pratiquement c'est très utile: j'utilise cette astuce tout le temps, donc je n'ai pas à attendre des opérations de suppression lentes.
la source
mktemp
c'est ce que j'essayais de retenir ...rm -rf directory
ourm -rf *
bien sûr, c'est la méthode la plus rapide à moins que votrerm
implémentation locale ne soit interrompue.L'utilisation
find
ne donne aucun avantage.Que ce soit rapide ou lent dépend principalement du système de fichiers et de l'implémentation du système d'exploitation. La question semble donc inappropriée.
UFS et ZFS sur Solaris sont connus pour être très rapides avec ce type de tâche, car les deux implémentations du système de fichiers incluent un code de suppression d'arrière-plan retardé qui provoque le retour rapide des appels
unlink()
etrmdir()
même lorsque l'objet associé prendra plus de temps au total.Avec la suppression d'arrière-plan retardée dans le noyau, les mises à jour du répertoire peuvent également être effectuées rapidement et cela aide à accélérer l'ensemble de l'opération.
la source
Ce n'est qu'une réponse partielle, mettant en lumière les trois valeurs renvoyées par la commande; cité dans la
time(1)
page de manuel :la source