Я попытался удалить файл в Linux с помощью rm -rf file_name
, но получил ошибку:
rm: file_name not removed. Text file busy
Как я могу узнать, какой процесс использует этот файл?
Ответы:
Вы можете использовать fuser
команду, например:
fuser file_name
Вы получите список процессов, использующих файл.
Вы можете использовать с ним разные флаги, чтобы получить более подробный вывод.
Дополнительную информацию можно найти в статье Википедии о фьюзере или на man
страницах.
fuser
реализации одинаковы или работают одинаково. Даже если -i
он определен в POSIX, конкретная реализация, которую вы используете, не обязательно имеет те же параметры, что описаны в статье в Википедии. Например, я использую AIX прямо сейчас, и fuser
доступный в этой системе параметр также не имеет этой -i
опции.
fuser
ни lsof
у меня , ни у меня не работал гостевой виртуальный бокс. Этот ответ меня спас.
Ответ @jim правильный - fuser
это то, что вы хотите.
Дополнительно (или в качестве альтернативы) вы можете использовать lsof
для получения дополнительной информации, включая имя пользователя, если вам нужно разрешение (без необходимости запускать дополнительную команду), чтобы убить процесс. (Хотя, конечно, если вы хотите убить процесс, вы fuser
можете сделать это с его -k
опцией. Вы можете fuser
использовать другие сигналы с -s
опцией - подробности смотрите на странице руководства.)
Например, при tail -F /etc/passwd
запуске в одном окне:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Обратите внимание, что вы также можете использовать, lsof
чтобы узнать, какие процессы используют определенные сокеты. Отличный инструмент в вашем арсенале.
lsof | head -1
чтобы увидеть все заголовки.
lsof | grep -E "PID|<your_process_name>"
показывает как 1-ю строку, так и процесс, который вы хотите запросить.
tree
что-нибудь из stdin? Если да, что он делает с этим вводом?
tree
том lsof
. Насколько я понимаю, tree
не читает со стандартного ввода, поэтому вывод lsof
будет отброшен при запуске lsof | tree ...
. Если это правильно, то lsof | tree MyFold
это то же самое tree MyFold
, что просто отображает содержимое, но не файлы, открытые каким-либо процессом.