您的位置:首页 > 运维架构 > Linux

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

2013-10-24 10:21 363 查看
这种场景经常见到,比如执行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|more
COMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init          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 /sbi
n/init
...

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

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

# lsof +d /proc -a -u root
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF       NODE NAME
rsyslogd   1311 root    3r   REG    0,3        0 4026532038 /proc/kmsg
vmtoolsd   1667 root   16r   REG    0,3        0 4026532032 /proc/meminfo
vmtoolsd   1667 root   17r   REG    0,3        0 4026532033 /proc/stat
vmtoolsd   1667 root   18r   REG    0,3        0 4026532020 /proc/vmstat
Xorg       2297 root    5w   REG    0,3        0 4026531957 /proc/mtrr
udisks-da  2673 root    7r   REG    0,3        0 4026531977 /proc/mdstat
gnome-pow  2712 root   15r   REG    0,3        0 4026532033 /proc/stat
lsof      24962 root    3r   DIR    0,3        0          1 /proc

还有个参数-U ,用来列出socket文件类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: