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

SSH и знаки ???

SSH и знаки ??? вместо русских буквSSH и знаки ??? вместо русских букв

Полетел винт на ноуте, купил новый, поставил систему (не без проблем), каждый раз что то новое узнаю про Linux на десктопе но об этом отдельно. 1 голос Схожі записи: device

15 полезных 'sed' команд

15 полезных ‘sed’ команд на каждый день для Linux системного администратора15 полезных ‘sed’ команд на каждый день для Linux системного администратора

Что бы не лазить лишний раз в гугл стоит сделать себе заметки по работе с основными командами linux, сейчас редко но приходится парсить файлы или конфиги, такие команды ускоряют работу

mysql репликация

Репликация mysql – master-slaveРепликация mysql – master-slave

Репликаця mysql “master – slave” очень хорошо подойдет для создания онлайн бекапа базы mysql, настраивается все просто: 1 голос Схожі записи: mysqldump gzip + remote server ERROR 2006: Mysql server