Cześć Mam wiele plików, które zostały usunięte, ale z jakiegoś powodu miejsca na dysku skojarzonego z usuniętymi plikami nie można wykorzystać, dopóki jawnie nie zabiję procesu dla pliku zajmującego miejsce na dysku
$ lsof /tmp/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted)
Miejsce na dysku zajmowane przez usunięty plik powyżej powoduje problemy, takie jak przy próbie użycia klawisza Tab do autouzupełniania ścieżki do pliku Występuje błąd bash: cannot create temp file for here-document: No space left on device
Ale po uruchomieniu kill -9 1623
przestrzeń dla tego PID zostaje zwolniona i nie pojawia się już błąd.
Moje pytania to:
- dlaczego to miejsce nie jest natychmiast zwalniane przy pierwszym usuwaniu pliku?
- jaki jest najlepszy sposób na odzyskanie przestrzeni plików związanej z usuniętymi plikami?
i daj mi znać każdą niewłaściwą terminologię, której użyłem, lub wszelkie inne istotne i stosowne informacje dotyczące tej sytuacji.
źródło
Jak powiedzieli inni,
lsof
można użyć do wyświetlenia listy wszystkich usuniętych plików, które nadal znajdują się na dysku z powodu otwartych deskryptorów plików. Może to być jednak bardzo długa lista. Oto polecenie, które wyświetla listę tych plików posortowanych według rosnącego rozmiaru w bajtach:Może to być bardziej zwięzły sposób, ale powyższe polecenie działało dla mnie.
źródło
Miejsce nie jest natychmiast zwalniane, ponieważ uruchomiony proces nadal ma otwarty uchwyt pliku do właśnie usuniętego pliku. W końcu, jeśli proces nadal próbuje użyć pliku, prawdopodobnie tak naprawdę nie chcesz, aby jądro się go pozbyło (plik). Może to nieco zakłócić proces. Najlepszym (i tylko o ile wiem) sposobem na zwolnienie przestrzeni jest zrobienie tego, co zrobiłeś - zabicie procesu.
źródło
(Mennica 17.1)
TL; DR:
sudo baobab
(Disk Usage Analyzer).root
śmieci użytkownika.Kontekst
Utknąłem w coraz mniejszej przestrzeni podczas ciągłego usuwania plików. Zainstalowałem
trash-cli
pakiet, aby opróżnić kosz, ale to nie pomogło. W końcu zauważyłem, że kiedy uruchomiłembaobab
(Disk Usage Analyzer w GUI, przynajmniej na Mint 17.1), aby sprawdzić strukturę miejsca na dysku, dał ostrzeżenie, że niektóre foldery są niedostępne. Więc uruchomiłem to jakoroot
używaniesudo baobab
. To ujawniło problem. Wiele plików, które zostały usunięte, znajdowało się w koszuroot
użytkownika, a nie mojego użytkownika. Dlatego nie mogłem zwolnić miejsca. Następnie po prostu opróżniłem kosz przy użyciu jako root (sudo trash-cli
) i cała moja przestrzeń została zwrócona.źródło
Spróbuj użyć poniższego polecenia
a następnie zabij pid usuniętego pliku.
źródło