Нотатки сісадміна Linux rm -f *: Argument list too long

rm -f *: Argument list too long

rm -f *: Argument list too long

На одном серваке который достался мне с новым заказчиком от неизвестного коллеги админа постоянно была какая то ерунда, периодами падал сервер с симптомами – диски на 100% и процессор на 100%, при этом процессор довольно неплохой “Xeon(R) CPU E5-1650 v2 @ 3.50GHz”

Долго ковырялся в этом сервере, грешил на все что можно, но ничего не подтверждалось, пока не обнаружил что директории с сессиями “заботливо” не чистились, никогда, вообще никогда с момента запуска сервака и доменов на нем. Мне не удалось на некоторых доменах даже посчитать чисто для интереса сколько там было файлов линейно в директории, хотя в одной я все же для интереса обнаружил 28 миллионов файлов, считало долго.

Встал остро вопрос как чистить такие каталоги, так как стандартными средствами линукса это не реально (ошибка “rm -f *: Argument list too long“). Наткнулся на доброго человека на хабре который поделился кодом низкоуровнего удаления файлов, хоть и долго, зато спокойно и без лишнего гемора.

Ниже идет код на С который нужно собрать на сервере и запустить, указав в качестве параметра каталог откуда удалять. В комментарии к коду идет пометка что нужно указать номер inode для текущего каталога и на уровень выше, это делается просто командой “ls -li”, в остальном достаточно тупого копипаста, файл я обозвал “lssss.c”:

Код любезно стянул с хабра себе на заметку.

Далее на сервере компилируем код:

Получившийся файл я прописал в cron для запуска раз в минуту:

Посмотрим через время как оно будет, но надеюсь что по чуть чуть вычистит и я смогу включить  автоматическую чистку сессия в php.

В принципе можно так не извращаться, если директорию удалось открыть или в ней всего пару сотен тысяч файлов или 1-2 миллиона, в ней можно пустить команду:

повторюсь – пускать только находясь в директории, если же не получается запускать в директории, можно попробовать пустить ее их другого места, только в параметрах указать пусть к каталогу:

для снижения нагрузкаи на диски можно добавть nice и ionice

 

Click to rate this post!
[Total: 0 Average: 0]

1 коментар до “rm -f *: Argument list too long”

Залиште відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Related Post