zoukankan      html  css  js  c++  java
  • Linux : lsof 命令

    lsof即list open files的缩写,在Linux和其他Unix上都由,Mac XOS上也是

    查看打开文件/目录及对应进程

    COMMAND        进程命令行字符串
    
    PID            进程ID
    
    USER           用户
    
    FD             txt(进程的程序文件), cwd(进程所在的当前目前), mem(), 
                   FDIDuwr 进程内该文件的打开表示符id, 其后的字母表示操作模式
    
    TYPE           REG(一般文件), DIR(目录), CHR(字符设备文件),FIFO(管道),IPv4(IPv4网络套接字)
    
    DEVICE
    
    SIZE/OFF
    
    NODE
    
    NAME           文件路径

    样例输出:

    COMMAND     PID   TID       USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    init          1             root  cwd       DIR                8,1     4096          2 /
    init          1             root  rtd       DIR                8,1     4096          2 /
    init          1             root  txt       REG                8,1   265848    2621507 /sbin/init
    init          1             root  mem       REG                8,1    47712    3149879 /lib/x86_64-linux-gnu/libnss
    _files-2.19.so

    查看某个文件/目录的使用进程,直接在命令后跟文件/目录名即可:

    # lsof server_time
    COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
    server_ti 20999  hgf txt    REG    8,1     9190 1442691 ./server_time
    # lsof /home/hgf/net
    COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
    bash      10075  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    bash      15706  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    bash      18324  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    bash      18573  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    sudo      20730 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    su        20740 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    bash      20741 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    server_ti 20999  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    lsof      21814 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
    lsof      21815 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net

    查看已删除文件

    这里的已删除文件指的是文件被某些进程打开,但磁盘上该文件已经被删除了(目录列出的结果上来看)。这些文件实际还是存在于磁盘上,可以通过使用lsof来找出这些文件

    # lsof|grep deleted
    init          1             root   10w      REG                8,1      969    2360289 /var/log/upstart/systemd-logind.log.1 (deleted)
    init          1             root   27w      REG                8,1     1406    2360292 /var/log/upstart/modemmanager.log.1 (deleted)
    ...
    ...... server_ti
    20999 hgf txt REG 8,1 9190 1442691 /home/hgf/net/server_time (deleted)

    此时我们可以从/proc文件系统中在对应的PID目录下复制出程序的文件,

    root@ubuntu:/proc/20999# ll
    total 0
    dr-xr-xr-x   9 hgf  hgf  0 May  7 10:56 ./
    dr-xr-xr-x 262 root root 0 Feb  5 00:26 ../
    dr-xr-xr-x   2 hgf  hgf  0 May  7 11:09 attr/
    -rw-r--r--   1 hgf  hgf  0 May  7 11:09 autogroup
    -r--------   1 hgf  hgf  0 May  7 11:09 auxv
    -r--r--r--   1 hgf  hgf  0 May  7 11:09 cgroup
    --w-------   1 hgf  hgf  0 May  7 11:09 clear_refs
    -r--r--r--   1 hgf  hgf  0 May  7 11:09 cmdline
    -rw-r--r--   1 hgf  hgf  0 May  7 11:09 comm
    -rw-r--r--   1 hgf  hgf  0 May  7 11:09 coredump_filter
    -r--r--r--   1 hgf  hgf  0 May  7 11:09 cpuset
    lrwxrwxrwx   1 hgf  hgf  0 May  7 10:56 cwd -> /home/hgf/net/
    -r--------   1 hgf  hgf  0 May  7 11:09 environ
    lrwxrwxrwx   1 hgf  hgf  0 May  7 10:56 exe -> /home/hgf/net/server_time (deleted)
    dr-x------   2 hgf  hgf  0 May  7 10:56 fd/
    ...
    
    root@ubuntu:/proc/20999# cp exe ~/

     如果是程序打开的一个文件而不是程序本身,则可以在fd目录中找到对应的描述符编号 

    root@ubuntu:/home/hgf/file# md5sum some.dat 
    6d12400811c3d945b3ca9ebe8ef86490  some.dat
    root@ubuntu:/home/hgf/file# lsof some.dat 2>/dev/null
    COMMAND    PID USER   FD   TYPE DEVICE  SIZE/OFF    NODE NAME
    openfile 26020  hgf    3u   REG    8,1 657457152 1442908 some.dat
    root@ubuntu:/home/hgf/file# ls /proc/26020/fd/3
    /proc/26020/fd/3
    root@ubuntu:/home/hgf/file# ls -l /proc/26020/fd/3
    lrwx------ 1 hgf hgf 64 May  7 11:23 /proc/26020/fd/3 -> /home/hgf/file/some.dat
    
    root@ubuntu:/home/hgf/file# rm some.dat 
    root@ubuntu:/home/hgf/file# ls -l /proc/26020/fd/3
    lrwx------ 1 hgf hgf 64 May  7 11:23 /proc/26020/fd/3 -> /home/hgf/file/some.dat (deleted)
    
    root@ubuntu:/home/hgf/file# cp /proc/26020/fd/3 ~/data.dat
    root@ubuntu:/home/hgf/file# md5sum ~/data.dat
    6d12400811c3d945b3ca9ebe8ef86490  /root/data.dat

    可以看到checksum是一样的

    查看打开的网络套接字

    显示输出和netstat得到的结果基本一样,比起netstat命令少输入几个字符

    root@ubuntu:~# lsof -i
    COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    avahi-dae   617  avahi   13u  IPv4    9209      0t0  UDP *:mdns 
    avahi-dae   617  avahi   14u  IPv6    9210      0t0  UDP *:mdns 
    avahi-dae   617  avahi   15u  IPv4    9211      0t0  UDP *:43412 
    avahi-dae   617  avahi   16u  IPv6    9212      0t0  UDP *:53055 
    cups-brow   706   root    8u  IPv4    1912      0t0  UDP *:ipp 
    cupsd     14751   root   10u  IPv6  662057      0t0  TCP ip6-localhost:ipp (LISTEN)
    cupsd     14751   root   11u  IPv4  662058      0t0  TCP localhost:ipp (LISTEN)
    dnsmasq   14951 nobody    4u  IPv4 1051360      0t0  UDP ubuntu:domain 
    dnsmasq   14951 nobody    5u  IPv4 1051361      0t0  TCP ubuntu:domain (LISTEN)
    ubuntu-ge 15063    hgf    9u  IPv4 1100396      0t0  TCP 10.211.55.4:56814->mistletoe.canonical.com:http (ESTABLISHED)
    dhclient  29249   root    6u  IPv4 1098611      0t0  UDP *:bootpc 
    dhclient  29249   root   20u  IPv4 1099042      0t0  UDP *:58036 
    dhclient  29249   root   21u  IPv6 1099043      0t0  UDP *:22173 

    查看IPv4上的TCP连接与打开端口,同时取消域名查询(-n)直接显示IP地址

    root@ubuntu:~# lsof -i 4tcp -n
    COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    cupsd     14751   root   11u  IPv4  662058      0t0  TCP 127.0.0.1:ipp (LISTEN)
    dnsmasq   14951 nobody    5u  IPv4 1051361      0t0  TCP 127.0.1.1:domain (LISTEN)
    ubuntu-ge 15063    hgf    9u  IPv4 1100396      0t0  TCP 10.211.55.4:56814->91.189.89.144:http (CLOSE_WAIT)
  • 相关阅读:
    集合
    字典
    列表
    事件兼容性封装
    E5中遍历数组的方法
    canvas绘制三等分饼型图
    canvas制作刮刮乐案例
    canvas绘制饼型图
    javascript中手风琴特效
    javascript中client()兼容性封装
  • 原文地址:https://www.cnblogs.com/lailailai/p/4484310.html
Copyright © 2011-2022 走看看