Как обработать неработающую ссылку после удаления файла в каталоге / proc / / fd?

Процесс создает огромное количество файлов журнала, а также удаляет его.

Многие из этих удаленных файлов имеют неработающие ссылки в каталоге / proc / pid / fd .

Нужно ли закрывать эти дескрипторы файлов процессом? Чтобы я не видел битые ссылки. Я подсчитываю количество файловых дескрипторов с помощью следующей команды:

ls /proc/<pid>/fd | wc -l
0
16.03.2016, 17:35
1 ответ

Если в процессе открыт файл и этот файл удаляется, файл появляется в виде неработающей ссылки в /proc/PID/fd. Это совершенно нормально. Неработающая ссылка сама по себе не является признаком того, что что-то не так.

Если программа держит открытыми много файлов, но ничего с ними не делает, это может указывать на ошибку в программе. Держать удаленный файл открытым имеет определенное применение, но для файла журнала это не имеет никакого смысла, поэтому, если это действительно файлы журнала, вероятно, в программе есть ошибка. Вам придется обратиться к автору программы, чтобы его исправили (или сделать это самостоятельно, если у вас есть исходный текст).

Нет способа действовать на процесс через /proc. Вы можете подключить к процессу отладчик и заставить его закрыть файлы, но результат не гарантирован. Это все равно что убрать лестницу под человеком, который лезет на крышу: он может упасть и сильно пораниться. Если вы хотите вернуть место на диске, вы можете усечь файлы через /proc: команда shell : >/proc/PID/fd/NUMBER сделает это. Если программа продолжает писать в файл, это снова начнет использовать дисковое пространство; способ избежать этого - использовать отладчик, чтобы заставить процесс dup2 открыть дескриптор файла на /dev/null, но мы вернулись к результатам, которые не гарантированы.

2
28.01.2020, 02:35

Теги

Похожие вопросы