[英]How find out which process is using a file in Linux?
我尝试使用rm -rf file_name
删除 Linux 中的文件,但出现错误:
rm: file_name not removed. Text file busy
我怎样才能找出哪个进程正在使用这个文件?
您可以使用fuser
命令,例如:
fuser file_name
您将收到使用该文件的进程列表。
您可以使用不同的标志,以便获得更详细的输出。
您可以在fuser 的 Wikipedia 文章或man
页中找到更多信息。
@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
来找出哪些进程正在使用特定的套接字。 您的武器库中的绝佳工具。
对于没有fuser的用户:
虽然我们可以使用lsof ,但还有另一种方法,即我们可以查询/proc文件系统本身,它列出了所有进程的所有打开文件。
# ls -l /proc/*/fd/* | grep filename
样本output如下:
l-wx------。 1 root root 64 Aug 15 02:56 /proc/5026/fd/4 -> /var/log/filename.log
从 output,可以使用ps等实用程序中的进程 ID 来查找程序名称
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.