Назад | Перейти на главную страницу

lsof показывает растущий tmp файл, помеченный как удаленный

У меня есть cron, который генерировал много (15 ГБ) предупреждений PHP и записывал их в файл журнала.

Я остановил процесс и в качестве временной меры перестал перенаправлять stderr на stdout, чтобы не заполнять свое хранилище.

После изменения я продолжал получать те же предупреждения о высоком уровне ввода-вывода, и хранилище сервера временно увеличивалось, а затем возвращалось к предыдущему размеру. Исходный файл журнала был пуст.

Я нашел один файл, используя lsof -p <PID of cron> это становилось все больше с каждой секундой.

sh      25626 root   10u   REG  202,1 21280244045     773 /tmp/tmpfZ14vFH (deleted)

Этот файл отмечен как удаленный, и я не могу найти его в каталоге / tmp.

Пожалуйста, расскажите немного об этом.

Записывает ли ОС stderr во временный файл во время выполнения процесса?

Вы должны выполнить цикл (запустить / остановить) процесс, который удерживает дескриптор файла.

Проверить с ps -ef |grep 25626 в качестве отправной точки, чтобы найти процесс, который его удерживает, и, если возможно, выполнить цикл. Это позволит дескриптору файла освободиться, и дисковое пространство будет очищено.

Я знаю, что ты уже это сделал (обнаружил, что sh это рассматриваемый процесс), но вот моя команда в моих заметках (вероятно, найденная в прошлом при обмене стеками) для поиска этих загадочно удаленных файлов: lsof | grep deleted | numfmt --field=7 --to=iec | head