linux:如何找出哪个进程正在使用一个文件?

我尝试使用rm -rf file_name删除Linux中的文件,但得到了错误:

rm: file_name not removed. Text file busy rm: file_name not removed. Text file busy

我怎样才能找出哪个进程正在使用这个文件?

您可以使用fuser命令,如:

 fuser file_name 

您将收到使用该文件的进程列表。

您可以使用不同的标志,以获得更详细的输出。

您可以在fuser的维基百科文章或man页中找到更多信息。

@吉姆的答案是正确的 – fuser是你想要的。

另外(或者也可以),您可以使用lsof来获取更多的信息,包括用户名,以防万一您需要权限(无需运行额外的命令)来终止进程。 (当然,如果要杀死进程是你想要的, fuser可以用-k选项来做到这一点,你可以使用-s选项来使用其他信号 – 请查看手册页的细节。)

例如,在一个窗口中运行tail -F /etc/passwd

 ghoti@pc:~$ lsof | grep passwd tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd 

请注意,您也可以使用lsof来找出使用特定套接字的进程。 一个很好的工具,在你的武库。