linux查文件被哪些程序占用—fuser和lsof的使用

这种场景经常见到,比如执行umount,发现被占用,想找到被谁占用

使用fuser来查文件或目录被谁占用

fuser /proc/proc:                2454rc

参数:-v 显示用多信息,-u 显示用户

# fuser -uv /proc                     用户     进程号 权限   命令/proc:               rtkit      2454 .rc.. (rtkit)rtkit-daemon

想要显示/proc目录下所有文件和目录被占用情况,加-m参数

# fuser -uvm /proc                     用户     进程号 权限   命令/proc:               root       1311 f.... (root)rsyslogd                     root       1667 f.... (root)vmtoolsd                     root       2028 f.... (root)acpid                     haldaemon   2040 f.... (haldaemon)hald                     root       2297 F.... (root)Xorg                     rtkit      2454 .rc.. (rtkit)rtkit-daemon                     root       2659 f.... (root)nautilus                     root       2673 f.... (root)udisks-daemon                     root       2712 f.... (root)gnome-power-man

使用删除某个PID,加-k参数,加入-i,配合-k会询问用户意愿

# fuser -ki /proc/proc:                2454rc杀死进程 2454 ? (y/N) n

lsof的使用

lsof列出被进程所打开的文件,直接运行,输出内容很多

加参数-u找某个用户的进程

# lsof -u root|moreCOMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAMEinit          1 root  cwd       DIR              253,0      4096          2 /init          1 root  rtd       DIR              253,0      4096          2 /init          1 root  txt       REG              253,0    150352       4560 /sbin/init... 

+d 参数,找某个目录被打开的文件

-a 多个条件同时成立,例如找root用户打开/proc的情况

# lsof +d /proc -a -u rootCOMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF       NODE NAMErsyslogd   1311 root    3r   REG    0,3        0 4026532038 /proc/kmsgvmtoolsd   1667 root   16r   REG    0,3        0 4026532032 /proc/meminfovmtoolsd   1667 root   17r   REG    0,3        0 4026532033 /proc/statvmtoolsd   1667 root   18r   REG    0,3        0 4026532020 /proc/vmstatXorg       2297 root    5w   REG    0,3        0 4026531957 /proc/mtrrudisks-da  2673 root    7r   REG    0,3        0 4026531977 /proc/mdstatgnome-pow  2712 root   15r   REG    0,3        0 4026532033 /proc/statlsof      24962 root    3r   DIR    0,3        0          1 /proc

还有个参数-U ,用来列出socket文件类型你说,你可以把它取下来吗?当我要取的时候,你淘气的躲开了,

linux查文件被哪些程序占用—fuser和lsof的使用

相关文章:

你感兴趣的文章:

标签云: