我尝试使用删除Linux中的文件rm -rf file_name,但出现错误:
rm: file_name not removed. Text file busy
我如何找出哪个进程正在使用此文件?
Answers:
您可以使用以下fuser命令:
fuser file_name
您将收到使用该文件的进程列表。
您可以对其使用不同的标志,以便接收更详细的输出。
您可以在热熔器的Wikipedia文章或man页面中找到更多信息。
fuser实现都相同或以相同方式工作。即使-i在POSIX中定义了,您所使用的特定实现也不一定具有与Wikipedia文章中所述的选项相同的选项。例如,我现在正在使用AIX,并且fuser该系统中的可用-i选项也没有。
@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>"同时显示第一行和您要查询的过程。