Naprawdę dużo plików

23 listopada, 2010 (21:07) | linux | By: konrad

Ile plików w jednym katalogu to „dużo”? Tysiąc, dwa, pięć? Maksymalna ilość plików, które może zawierać pojedynczy katalog jest zależna od systemu plików, jakiego używamy. I choć wartość ta jest z reguły bardzo duża, to jednak w rzeczywistości już przy dużo mniejszej ilości możemy odczuć drastyczny spadek wydajności.

Przykład: Debian służący jako serwer WWW na którym miałem okazję ostatnio grzebać. Niestety, webmaster zapomniał, że czasami warto czyścić katalogi, w których serwis zapisuje dane sesji użytkownika. Efekt? Proszę bardzo:
k@m:~/domains/xxx/public_html/cache$ ls -1 | wc -l
594013
Już samo listowanie takiego katalogu jest bardzo uciążliwe. A co ma powiedzieć serwer, które operuje na zawartych w nim plikach i tworzy kolejne? Po znalezieniu kilku takich „kwiatków” przestałem się dziwić, że maszyna działała wyjątkowo niestabilnie. Nawet biedny tar nie był w stanie zrobić kopii bezpieczeństwa takiego katalogu…

OK, ale co możemy z taką sytuacją zrobić? Po pierwsze spróbować przywrócić normalność, czyli wyrzucić wszystko, co się w tym katalogu znajduje.

Upsssss….
k@m:~/domains/xxx/public_html/cache$ rm ./*
bash: /bin/rm: Lista argumentów za długa
Chyba ilość plików przeraziła basha :-)

Spróbujmy więc inaczej:

k@m:~/domains/xxx/public_html/cache$ find . -type f | xargs rm
[tutaj musimy uzbroić się w cierpliwość]

k@m:~/domains/xxx/public_html/cache$ ls -1 | wc -l
0

Ta-dam :-)

Po drugie – grzecznie (ale stanowczo) poprosić webmastera, żeby poprawił swój portal i sprzątał po sobie śmieci.

A po trzecie – tak na wszelki wypadek – dorzucić do crona coś takiego:

find /home/www/domains/xxx/public_html/cache/* -mtime +10 | xargs rm

Konkluzja: Warto zaznajomić się z poleceniem xargs i ideą potoków, bo czasami narzędzia, które uważamy za podstawowe i uniwersalne, odmawiają współpracy.

Mała aktualizacja (rekordu): Inny serwer, ten sam webmaster:
e:/home/domains/yyy/public_html/__sessions__# ls -1 |wc -l
3125242

Trackback URL: http://konrad.bechler.pl/2010/11/naprawde-duzo-plikow/trackback/

«

»

Comments

Pingback from my personal page » „Lista argumentów za długa” po raz kolejny
Time 24 lipca 2012 at 07:47

[…] czas temu pisałem o komunikacie „Lista argumentów za długa„, którym może nas uraczyć system Uniksowy […]

Write a comment





*