admin@demi4.com

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

 

3 голоса
Позначки:, ,

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

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

Увійти через: 

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

Related Post

socks proxy dante

socks proxy dantesocks proxy dante

Якось дуже часто стали проявлятись якісь дивні негаразди у роботі софта, то Slack каже що я під санкціями, то ще якийсь софт працює некорректно, встановив на своєму сервері socks проксі,

Vagrant - первое знакомство

Vagrant – первое знакомствоVagrant – первое знакомство

Возникла тут задача потенциальная – клиенту на его 15 серверах надо поднять прокси для какого то парсинга. Когда это надо будет и как быстро пока не понятно – решил под

zabbix

Zabbix не отображает надписи на графикахZabbix не отображает надписи на графиках

При  переносе мониторинга Zabbix с ВДС на выделенный сервер столкнулся с проблемой что после свежей установки заббикса у меня на графиках перестали отображаться названия графиков и описание значений. 2 голоса