Linux: как узнать, какой процесс использует файл?
Я попытался удалить файл в Linux с помощью rm -rf file_name
, но получил ошибку:
rm: file_name not removed. Text file busy
.
Как узнать, какой процесс использует этот файл?
Ответы
Ответ 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
, чтобы узнать, какие процессы используют определенные сокеты. Отличный инструмент для вашего арсенала.