查看进程打开了哪些文件和文件被哪个进程打开

lsof: list open file

单独执行lsof将输出系统中所有打开的文件
name:文件被哪些进程所打开
-p pid:进程pid所打开的所有文件
-u username:属于user进程所打开的文件
-i tcp/udp/:22 :列出网络连接
-c ssh: ssh打开的所有文件

示例:
监控打开的文件,设备
查看文件,设备被哪些进程占用

lsof /dev/tty1
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
getty   4095 root    0u   CHR    4,1      0t0 5834 /dev/tty1
getty   4095 root    1u   CHR    4,1      0t0 5834 /dev/tty1
getty   4095 root    2u   CHR    4,1      0t0 5834 /dev/tty

监控文件系统
指定目录,挂载点,可以看到有哪些进程打开了其下的文件

root@master:/proc# lsof  /dev/ 
COMMAND     PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
init          1       root    0u   CHR    1,3      0t0 5820 /dev/null
init          1       root    1u   CHR    1,3      0t0 5820 /dev/null
init          1       root    2u   CHR    1,3      0t0 5820 /dev/null
。。。。。。

列出被指定进程名打开的文件

root@master:/proc# lsof -c ssh 
COMMAND    PID  USER   FD   TYPE             DEVICE SIZE/OFF   NODE NAME
sshd      1102  root  cwd    DIR                8,1     4096      2 /
sshd      1102  root  rtd    DIR                8,1     4096      2 /
sshd      1102  root  txt    REG                8,1   762752 154824 /usr/sbin/sshd
sshd      1102  root  mem    REG                8,1    47712 397705 /lib/x86_64-linux-gnu/libnss_files-2.19.so
。。。。。。

监控进程
指定进程号,可以查看该进程打开的文件

root@master:/proc# lsof -p 1102 
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
sshd    1102 root  cwd    DIR    8,1     4096      2 /
sshd    1102 root  rtd    DIR    8,1     4096      2 /
sshd    1102 root  txt    REG    8,1   762752 154824 /usr/sbin/sshd
sshd    1102 root  mem    REG    8,1    47712 397705 /lib/x86_64-linux-gnu/libnss_files-2.19.so
。。。。。。

监控网络
查看指定端口有哪些进程在使用(lsof -i 列出所有的打开的网络连接)

root@master:/proc# lsof -i:22
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1102  root    3u  IPv4   9660      0t0  TCP *:ssh (LISTEN)
sshd    1102  root    4u  IPv6   9662      0t0  TCP *:ssh (LISTEN)
sshd    4421  root    3u  IPv4  24974      0t0  TCP 172.30.51.74:ssh->172.30.51.216:53593 (ESTABLISHED)
sshd    4508 cathy    3u  IPv4  24974      0t0  TCP 172.30.51.74:ssh->172.30.51.216:53593 (ESTABLISHED)
root@master:/proc# lsof -i -c ssh
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND     PID     USER   FD   TYPE             DEVICE SIZE/OFF   NODE NAME
avahi-dae   733    avahi   13u  IPv4               8750      0t0    UDP *:mdns 
avahi-dae   733    avahi   14u  IPv6               8751      0t0    UDP *:mdns 
。。。。。

fuser:

单独执行将输出帮助页面 _
-m name: 文件被哪些进程所打开
-k name:杀死打开文件的进程
-u :在每个PID后面添加进程的所属用户
-v :显示更详细的信息

示例:
显示使用某个文件的进程信息:

$ fuser -um /dev/sda2  
/dev/sda2:            6378c(quietheart)  6534c(quietheart)  6628(quietheart)  
6653c(quietheart)  7429c(quietheart)  7549c(quietheart)  7608c(quietheart)  
这个命令在umount的时候很有用,可以找到还有哪些用到这个设备了。  

杀掉打开readme文件的程序

$fuser -m -k -i readme  
这里,会在kill之前询问是否确定。最好加上-v以便知道将要杀那个进程。  

查看那些程序使用tcp的80端口

$fuser -v -n tcp 80  或  $fuser -v 80/tcp  

fuser不同信号的应用

用 -l参数可以列出fuser所知的信号
# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL,例如:只是挂起进程,那么发送HUP信号就可以了
# fuser -v /root/install.log
                         用户     进程号 权限   命令
 /root/install.log:   root       3347 f.... tail
 # fuser -k -SIGHUP /root/install.log
 /root/install.log:    3347
# fuser -v /root/install.log

总结:
查看某个进程打开了哪些文件
lsof -p PID
lsof -c ssh
lsof -i :22
fuser 22/tcp
查看文件被哪些进程所打开
lsof file/dev
fuser -m file/dev

fuser -v:显示更详细的信息

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值