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