Я попытался удалить файл в 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, что просто отображает содержимое, но не файлы, открытые каким-либо процессом.