Przekroczenie maksymalnej ilości plików na serwerze

Klient zgłosił nam problem związany z limitem plików na swoim serwerze. Otrzymał od swojego usługodawcy następującą wiadomość:

„Na Państwa serwerze XXXXXX został przekroczony dopuszczalny limit liczby plików.
Obecnie liczba plików wynosi 1 013 751, podczas gdy maksymalna dozwolona wartość dla posiadanej opcji serwera to 1 000 000.”

 

Przyczyna:

Po zalogowaniu na serwer zauważyliśmy dużą liczbę plików o nazwie cron.php.[numer].

Ich nadmierne tworzenie wynikało z błędnej konfiguracji zadania crona:

wget http://strona.xyz/cron.php

zamiast

wget --quiet -O /dev/null http://strona.xyz/cron.php

Rozwiązanie:

Można je usunąć np. za pomocą komendy:

rm /ścieżka/do/katalogu/cron.php.*

lub (dla większej pewności)

rm -f /ścieżka/do/katalogu/cron.php.[0-9]*

To usunie tylko pliki zaczynające się od cron.php. i zawierające cyfry.

 


Automatyczne usunięcie (cron)
Jeśli problem będzie się powtarzał, możesz dodać do crona automatyczne czyszczenie np. raz dziennie:

0 2 * * * find /ścieżka/do/katalogu -name 'cron.php.[0-9]*' -type f -delete

 

Bezpieczne usunięcie (przy sprawdzeniu plików):
Jeśli chcesz zobaczyć, jakie pliki zostaną usunięte, zanim wykonasz operację, użyj:

find /ścieżka/do/katalogu -name 'cron.php.[0-9]*' -type f

Gdy lista wygląda poprawnie, usuń pliki:

find /ścieżka/do/katalogu -name 'cron.php.[0-9]*' -type f -delete

Przydatne komendy:

Zliczanie wszystkich plików w katalogu:

find . | wc -l

Za pomocą poniższego polecenia można sprawdzić liczbę plików obecnie znajdujących się w podkatalogach katalogu, w którym zostanie wywołane polecenie:

for i in `find . -maxdepth 1 -type d`; do echo "`find $i/. |wc -l` $i"; done | sort -rn

 

KROK 1 Z 4

Z CZYM POTRZEBUJESZ POMOCY?