Подтвердить что ты не робот

Linux: как узнать, какой процесс использует файл?

Я попытался удалить файл в Linux с помощью rm -rf file_name, но получил ошибку:

rm: file_name not removed. Text file busy.

Как узнать, какой процесс использует этот файл?

4b9b3361

Ответ 1

Вы можете использовать команду fuser, например:

fuser file_name

Вы получите список процессов с использованием файла.

Вы можете использовать с ним разные флаги, чтобы получить более подробный вывод.

Дополнительную информацию можно найти в статье фьюзера Wikipedia или на страницах man.

Ответ 2

@jim ответ правильный - fuser - это то, что вы хотите.

Дополнительно (или поочередно) вы можете использовать lsof для получения дополнительной информации, включая имя пользователя, если вам нужно разрешение (без необходимости запуска дополнительной команды), чтобы убить процесс. (Конечно, если убить процесс - это то, что вы хотите, fuser может сделать это с помощью параметра -k. Вы можете использовать fuser другие сигналы с опцией -s - проверьте справочную страницу для получения более подробной информации.)

Например, если tail -F /etc/passwd работает в одном окне:

[email protected]:~$ lsof | grep passwd
tail      12470    ghoti    3r      REG  251,0     2037 51515911 /etc/passwd

Обратите внимание, что вы также можете использовать lsof, чтобы узнать, какие процессы используют определенные сокеты. Отличный инструмент для вашего арсенала.