Naprawdę dużo plików
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
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…
594013
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 ./*
Chyba ilość plików przeraziła basha :-)
bash: /bin/rm: Lista argumentów za długa
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
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 […]