我正在一台 Linux(Scientific Linux CERN SLC 版本 6.9(Carbon))机器上工作,我无法在该机器上安装程序,并且lsof
或fuser
命令不可用。
我正在尝试删除这台计算机上的 NFS 点文件,但我不断收到错误Device or resource busy
,因此我想找出哪个进程(我怀疑它可能是我之前启动的进程nohup
)仍然具有该文件的文件描述符。
我怎样才能实现这个目标?
答案1
使用/proc/<PID>/fd
。
示例....我们想要找出哪个 pid 已/var/log/audit/audit.log
打开。 fuser
告诉我们它的 pid 255。
[root@instance-1 ~]# fuser /var/log/audit/audit.log
/var/log/audit/audit.log: 255
[root@instance-1 ~]#
所以使用非fuser
解决方案:
[root@instance-1 ~]# find /proc/*/fd -ls|grep /var/log/audit/audit.log
188652 0 l-wx------ 1 root root 64 Jul 1 06:22 /proc/255/fd/5 -> /var/log/audit/audit.log
[root@instance-1 ~]#