红联Linux门户
Linux帮助

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

发布时间:2015-09-22 16:17:04来源:linux网站作者:happy_walker

这种场景经常见到,比如执行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文件类型。


Linux fuser命令详解:http://www.linuxdiyf.com/linux/1403.html

Linux命令教程:lsof入门:http://www.linuxdiyf.com/linux/10384.html

使用lsof恢复误删日志文件或数据库:http://www.linuxdiyf.com/linux/11138.html

lsof-Linux查看文件信息的强大工具:http://www.linuxdiyf.com/linux/4546.html