这种场景经常见到,比如执行umount,发现被占用,想找到被谁占用
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列出被进程所打开的文件,直接运行,输出内容很多
加参数-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文件类型