GNU/Linux >> Znalost Linux >  >> Linux

Jak vyřešit nepravidelné statistiky využití disku z du (příkaz Linux)

Nedávno byl na mém linuxovém serveru jeden z diskových oddílů plný a bylo nutné odstranit 100 MB velkých souborů, aby se uvolnilo místo. Po uvolnění místa se oddíl stále zobrazoval plný a žádné volné místo pro uložení mých souborů. Později jsem si k mému překvapení všiml níže uvedeného rozdílu:

Příkaz využití disku (du) ukázal využitý prostor pouze 11G!

-bash-3.2# du -chs /myhome/11G /myhome/11G total-bash-3.2#

Výše uvedený příkaz nezahrnuje skryté tečkové soubory a adresáře. Pomocí níže uvedeného příkazu můžete také zjistit využití disku skrytými tečkami a adresáři.

-bash-3.2#du -sch .[!.]* /myhome/*

Pokud byste ještě chtěli uvést přesné soubory a jejich absolutní cesty, použijte níže uvedený příkaz:

-bash-3.2# du -h -x /myhome/*

Ale příkaz df ukázal, že diskový oddíl /myhome/ je plný!!!

-bash-3.2$ df -hFilesystem Size Použitá Avail Use% Mounted on/dev/cciss/c0d0p8 20G 14G 4.7G 75% //dev/cciss/c0d0p9 9.7G 1.3G 8.0G 14%/ /tmp/dev% cciss/c0d0p3 30G 4.3G 24G 16 % /usr/dev/cciss/c0d0p10 44G 41G 0G 100 % /myhome /dev/cciss/c0d0p6 30G 27G 670M 98% /var/dev/cciss/c0d0p5 30G 20G 8.0G 72% /opt/dev/cciss/c0d0p2 78G 21G/54G/dev.500 /export 18% G 4% /boottmpfs 7,9G 0 7,9G 0% /dev/shmtmpfs 491M 61M 431M 13% /var/lib/ganglia/rrds

Nyní je úkolem zjistit, kde je zbývající místo? Je to někde schované?

K nalezení otevřených souborů použijte příkaz LSOF

Možná jste odstranili některé soubory, ale proces by byl stále otevřený. Dokud tyto soubory nezavřete, místo se neuvolní. Níže uvedený příkaz „lsof“ vám řekne, které smazané soubory jsou stále otevřené!

-bash-3.2# /usr/sbin/lsof | grep odstraněn |grep /myhomejava 10249 ramya 1u REG 104,10 45866276291 4645619 /myhome/var/container.log (smazáno) java 10249 ramya 2u REG 104,10 45866276291 4645619 /myhome/var/container.log (smazáno) 

Teď byste měli nějaké vodítko, ne? Ano, soubor /myhome/var/container.log, který byl smazán, je stále otevřen s id procesu:10249. Nyní přejděte do odpovídajícího adresáře id procesu v /proc, jak je uvedeno níže:

-bash-3.2# cd /proc/10249/fd/

Vypište soubory, abyste viděli obslužný program souboru odkazující na odstraněný soubor.

-bash-3.2# ls -lrt | grep /myhome/lrwx------ 1 rámeček 64. února 13 14:04 2 -> /myhome/var/container .log (smazáno)lrwx------ 1 rámeček rámečku 64. února 13 14:04 1 -> /myhome/var/container.log (smazáno)

Nyní vymažte odpovídající obslužný program souboru, abyste uvolnili místo pomocí níže uvedeného příkazu:

-bash-3.2# cat /dev/null> /proc/10249/fd/1-bash-3.2# cat /dev/null> /proc/10249/fd/2

Všimněte si, že inode bude stále otevřený, ale nyní má délku 0.

-bash-3.2# /usr/sbin/lsof | smazané> 

Nyní zkontrolujte diskový oddíl, abyste měli úsměv na tváři.

-bash-3.2# df -h |grep /myhome/dev/cciss/c0d0p10 44G 12G 30G 28 % /myhome

Linux
  1. Jak vymazat konkrétní příkaz z historie Bash v Linuxu

  2. Linux df příkaz

  3. Jak monitorovat využití sítě pomocí nload v Linuxu?

  1. Linux – jak minimalizovat využití místa na disku?

  2. Jak získat využití disku z příkazového řádku?

  3. Určení využití disku v Linuxu pomocí příkazu „du“.

  1. Jak zkontrolovat využití místa na disku v Linuxu

  2. Jak klonovat disky pomocí příkazu Linux dd

  3. Jak monitorovat využití sítě pomocí nload v Linuxu