我尝试使用删除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>"
同时显示第一行和您要查询的过程。