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”

Leave a Reply

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

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

Related Post

Backup Elasticsearch to AWS S3Backup Elasticsearch to AWS S3

Налаштування S3 bucket для створення бекапів elasticsearch та збереження бекапів у бакеті. 1 голос Схожі записи: Cluster health status changed from [RED] to [YELLOW] Restore ElasticSearch backup from S3 Використання

$PHP_AUTH_USER не передаётся

$PHP_AUTH_USER не передаётся$PHP_AUTH_USER не передаётся

Столкнулся с проблемой, после переноса сайта перестала работать HTTP авторизация написанная на php, не берусь судить зачем и почему ее вообще применять – не понимаю я этого. Копание в логах

SSH и знаки ???

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

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