Tropienie pożeracza dysku

P

rzedstawiony hack jest tłumaczeniem „Playing Hunt the Disk Hog” z książki „Linux Servers Hacks” autorstwa Rob’a Flickenger’a udostępnionym on-line (Hack #15) na stronie http://hacks.oreilly.com. Do tłumaczenia zostało dodane także parę informacji od tłumacza.

   To prawie zawsze zdarza się w sobotnią noc. Dostajesz wiadomość na komórkę, ponieważ partycja na jednym z serwerów (prawdopodobnie na serwerze pocztowym) niebezpiecznie zapełnia się prawie do końca.

Oczywiście program df pokaże, co nam zostało:

rob@magic:~$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda1 7040696 1813680 4863600 27% /
/dev/sda2 17496684 13197760 3410132 79% /home
/dev/sdb1 8388608 8360723 27885 100% /var/spool/mail

Ale przecież już wiesz, że zapełnia się systemowy katalog poczty (dlatego SMS oderwał Cię od zupełnie niezwiązanego z serwerem poczty sposobu spędzania czasu). Jak szybko przekonać się, co pożera całe miejsce?

Oto jednowierszowy skrypt, który warto mieć w pliku .profile:

1
alias ducks='du -cks * |sort -rn |head -11'

Kiedy ten alias jest aktywny, uruchomienie polecenia ducks (kaczki) w dowolnym katalogu spowoduje wyświetlenie łącznego zużycia oraz listy 10 najbardziej żarłocznych użytkowników w kolejności malejącej. Podkatalogi są przeszukiwane rekursywnie, a to jest bardzo przydatne (choć może długo potrwać na silnie obciążonym serwerze lub w katalogu, w którym znajduje się bardzo dużo podkatalogów i plików). Zobaczmy jak to działa:

rob@magic:~$ cd /var/spool/mail
rob@magic:/var/spool/mail$ ducks
8388608 total
1537216 rob
55120 phil
48800 raw
43175 hagbard
36804 mal
30439 eris
30212 ferris
26042 nick
22464 rachael
22412 valis

Oj! Wygląda, że mój systemowy katalog poczty się przepełnia. Mam o całe rzędy wielkości poczty więcej od pozostałych użytkowników. Lepiej coś z tym zrobić, np. kupić nowy sprzęt i zmodernizować partycję /var/spool/mail. ;)

Ponieważ to polecenie rekursywnie przetwarza podkatalogi, nadaje się również do tworzenia okresowego raportu wykorzystania katalogów macierzystych:

root@magic:/home# ducks
[ parę sekund później ]
13197880 total
2266480 ferris
1877064 valis
1692660 hagbard
1338992 raw
1137024 nick
1001576 rob
925620 phil
870552 shared
607740 mal
564628 eris

Przy poszukiwaniu osób zabierających całe miejsce na dysku ducks pozwala darować sobie pracochłonne wpisywanie poleceń z klawiatury (choć gdyby alias brzmiał ds, byłoby jeszcze szybciej, ale już nie tak zabawnie). Innymi metodami by uzyskać efekt tej komendy (lecz listing będzie w MB) są polecenia:

1
2
3
du -cksh * |sort -rn |head -11
ls -a | grep -v -e '^\.\.$' | xargs -i du -hs {} |sort -rn |head -11
ls -A | grep -v -e '^\.\.$' |xargs -i du -ks {} |sort -rn |head -11 | awk '{print $2}' | xargs -i du -hs {}
0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
How to Clear RAM Memory Cache, Buffer and Swap Space on Linux
Viewed 2873 times since Mon, Nov 23, 2020
How to Configure ‘FirewallD’ in RHEL/CentOS 7 and Fedora 21
Viewed 10669 times since Wed, Oct 9, 2019
LVM: Extend an existing Volume Group by adding a new disk
Viewed 2192 times since Sat, Jun 2, 2018
Linux PAM configuration that allows or deny login via the sshd server
Viewed 2097 times since Wed, Oct 3, 2018
ZPOOL: Create a new zpool for zfs filesystems
Viewed 2377 times since Sun, Jun 3, 2018
ZFS: Grow/Shrink an existing zfs filesystem
Viewed 6487 times since Sun, Jun 3, 2018
How to accurately determine when the system was booted
Viewed 2433 times since Wed, Oct 3, 2018
How to find the largest files and directories in Linux?
Viewed 3547 times since Sun, May 20, 2018
Using renice and taskset to manage process priority and CPU affinity with Linux OEL 6.4
Viewed 3783 times since Mon, Feb 17, 2020
Increase A VMware Disk Size (VMDK) Formatted As Linux LVM without rebooting
Viewed 15629 times since Wed, May 30, 2018