Mam folder z 266778 podfolderami. Jak mogę go usunąć?
próbowałem
cd ~/.local/share/Trash/
sudo rm -rf *
ale to zajmuje dużo czasu. Po 1 minucie 25 sekundach w czasie rzeczywistym i 0,072 sekundach użytkownika usunął tylko 2500 folderów. W ten sposób usunięcie tego folderu potrwa ponad dwie godziny.
Czy istnieje szybszy sposób na usunięcie tego folderu? Dlaczego istnieje tak duża różnica między czasem użytkownika a czasem rzeczywistym?
real 1m25.474s
user 0m0.072s
sys 0m28.142s
Używam Linux 2.6.32 (Ubuntu 10.04.4 LTS).
filesystems
rm
Martin Thoma
źródło
źródło
Odpowiedzi:
Jeśli twoja wersja polecenia „find” implementuje komendę -delete, możesz spróbować
W tym przypadku:
Niektóre polecenia, takie jak rm, wykonują większość swojej pracy w jądrze. Dokładniej w procedurach systemu plików. Czas spędzony na wykonywaniu wywołań systemowych jest rozliczany w ten sposób, więc chociaż polecenie „rm” działa przez długi czas, nie wykonuje dużej pracy w obszarze użytkownika - wywołania systemowe wykonują większość pracy.
źródło
find ~/.local/share/Trash/*/ -delete
(oczywiście spowoduje to również usunięcie plików (i katalogów) z dowolnego z tych Trash / * / subdirs również)time
find directory -delete
naprawdę jest szybszy niżrm -rf directory
? W końcu wykonują tę samą pracę i nie ma na to dwóch sposobów.To zależy od twojej definicji postu . Odpowiedzi już tutaj dają dobre rozwiązanie do faktycznego usunięcia katalogów z systemu plików, ale jeśli naprawdę potrzebujesz zwolnić nazwę katalogu tak szybko, jak to możliwe, zmiana nazwy w tym samym systemie plików jest natychmiastowa:
Technicznie jest to oszustwo, ponieważ nie przyspieszyłem faktycznego usunięcia, ale praktycznie jest to bardzo przydatne: używam tej sztuczki przez cały czas, więc nie muszę czekać na powolne usuwanie.
źródło
mktemp
to jest to , co próbowałem zapamiętać ...rm -rf directory
lubrm -rf *
oczywiście jest to najszybsza metoda, chyba że lokalnarm
implementacja jest zepsuta.Korzystanie
find
nie daje żadnych korzyści.To, czy jest to szybkie czy wolne, zależy głównie od systemu plików i implementacji systemu operacyjnego. Pytanie wydaje się więc niewłaściwe.
UFS i ZFS w systemie Solaris są znane z tego, że są bardzo szybkie w tego rodzaju zadaniach, ponieważ obie implementacje systemu plików zawierają opóźniony kod usuwania tła, który powoduje, że wywołania
unlink()
irmdir()
zwracają się szybko, nawet jeśli powiązany obiekt zajmie w sumie więcej czasu.Dzięki opóźnionemu usuwaniu tła w jądrze aktualizacje katalogu mogą być również wykonywane szybko, co pomaga przyspieszyć całą operację.
źródło
To tylko częściowa odpowiedź, rzucająca światło na trzy wartości zwracane przez polecenie; cytowane ze
time(1)
strony :źródło