GNU/Linux >> Znalost Linux >  >> Linux

df v linuxu nezobrazuje správné volné místo po odstranění souboru

Řešení 1:

Odstraněním názvu souboru se soubor ve skutečnosti neodstraní. Nějaký jiný proces drží soubor otevřený, což způsobuje, že nebude odstraněn; restartujte nebo ukončete tento proces, aby se soubor uvolnil.

Použijte

lsof +L1

abyste zjistili, který proces používá smazaný (nepropojený) soubor.

Řešení 2:

jak zmiňuje Ignacio, smazáním souboru se místo neuvolní, dokud neodstraníte procesy, které mají proti tomuto souboru otevřené popisovače.

Přesto můžete získat zpět prostor, aniž byste zabili procesy. Vše, co musíte udělat, je odstranit deskriptory souborů.

Nejprve spusťte lsof | grep odstraněn, aby bylo možné identifikovat proces, ve kterém je soubor uložen

[[email protected] log]$ /usr/sbin/lsof |grep deleted
java       8859   hudson    1w      REG              253,0 3662503356    7578206 /crucible/data/current/var/log/fisheye.out (deleted)

Poté proveďte:

cd /proc/PID/fd

pak

[[email protected] fd]$ ls -l |grep deleted
total 0
l-wx------ 1 hudson devel 64 Feb  7 11:48 1 -> /crucible/data/current/var/log/fisheye.out (deleted)

"1" bude deskriptor souboru. Nyní zadejte "> FD", abyste získali zpět toto místo

> 1

Možná budete muset operaci zopakovat, pokud soubor drží jiné procesy.

Řešení 3:

Jednou z možností je, že soubory, které jste smazali, mají v souborovém systému více odkazů. Pokud jste vytvořili pevné odkazy, několik názvů souborů bude ukazovat na stejná data a data (skutečný obsah) nebudou označena jako volná/použitelná, dokud na ně nebudou odstraněny všechny odkazy. Než soubory smažete, buď je uveďte (položka s názvem Odkazy) nebo na ně proveďte ls -l (měl by být druhý sloupec).

Pokud se ukáže, že se na soubory odkazuje jinde, myslím, že budete muset ls -i soubor(y) najít číslo-inodu a poté provést hledání pomocí -inum <číslo-inodu>, abyste našli další odkazy na tento soubor (pravděpodobně také budete chtít použít -mount, abyste také zůstali ve stejném souborovém systému).

Řešení 4:

Pokud byl oddíl nakonfigurován tak, aby vyhradil určitou část místa na disku pouze pro použití root, df nezahrne tento prostor jako dostupný.

[[email protected]]# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/optvol           625G  607G     0 100% /opt
...

I poté, co bude místo znovu získáno smazáním souborů/adresářů, uživatel bez oprávnění root nebude moci zapisovat do konkrétního oddílu.

Můžete snadno zkontrolovat, zda je to váš případ, pokusem o vytvoření souboru na zařízení jako uživatel root a uživatel bez tohoto oprávnění.

Navíc můžete zkontrolovat konfiguraci souborového systému spuštěním

tune2fs -l <device> | egrep "Block count|Reserved block count

a vlastní výpočet skutečných %.

Chcete-li změnit % disku vyhrazené pro použití pouze root, spusťte

tune2fs -m <percentage> <device>

Řešení 5:

Soubor je stále uzamčen procesem, který jej otevírá. Chcete-li uvolnit místo, postupujte takto:

  1. Spusťte sudo lsof | grep deleted a podívejte se, který proces uchovává soubor. Příklad výsledku:

    $ sudo lsof | grep deleted
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
    cron     1623 root    5u   REG   0,21        0 395919638 /tmp/tmpfPagTZ4 (deleted)
    
  2. Zabijte proces pomocí sudo kill -9 {PID} . Ve výše uvedeném vzorku je PID 1623.

    $ sudo kill -9 1623
    
  3. Spusťte df zkontrolovat, zda je místo již uvolněno. Pokud je stále plný, možná budete muset počkat několik sekund a znovu zkontrolovat.


Linux
  1. Linux – Kali Linux je nainstalován, ale nezobrazuje se ve správci spouštění?

  2. Linux + Jak ignorovat (filtrovat) soubor s mezerou?

  3. Soubor png.h nebyl nalezen - Linux

  1. 7 tipů pro příkazový řádek Linuxu pro úsporu místa v souborech médií

  2. Použijte df ke kontrole volného místa na disku v Linuxu

  3. SH skript v $PATH není v Linuxu Alpine 3.11 nalezen

  1. Jak obnovit smazaný soubor v Linuxu

  2. Jak vytvořit nebo zvětšit swapový prostor v Linuxu

  3. Zařízení Linux po změně velikosti nezobrazuje správné místo na disku