zoukankan      html  css  js  c++  java
  • 【Linux常见命令】lsof命令

    lsof - list open files

    lsof命令用于查看你进程打开的文件,进程打开的端口(TCP、UDP),找回/恢复删除的文件,打开文件的进程。

    语法:

        lsof [选项] [文件]

    常用选项:

    • -c <进程名> 列出指定进程所打开的文件
    • +D <目录> 递归列出目录下被打开的文件
    • -i <条件> 列出符号条件的进程(4、6、协议、:端口、@ip)
    • -n <目录> 列出使用NFS的文件
    • -p <进程号> 列出指定进程号所打开的文件
    • -u s 列出login name或UID为s的程序
     

    实例

    1. 在没有任何参数时,显示当前系统已经打开的正在使用的所有文件

    [root@oldboy ~]# lsof|more -10
    COMMAND    PID  USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    init         1  root  cwd       DIR                8,3     4096          2 /
    init         1  root  rtd       DIR                8,3     4096          2 /
    init         1  root  txt       REG                8,3   150352     139708 /sbin/init
    init         1  root  mem       REG                8,3    65928     132072 /lib64/libnss_fil
    es-2.12.so
    init         1  root  mem       REG                8,3  1926480     155325 /lib64/libc-2.12.
    so
    init         1  root  mem       REG                8,3    93320     155348 /lib64/libgcc_s-4
    .4.7-20120601.so.1
    --More--

    显示的内容分析:

    1. 名称详解

    •  COMMAND:进程名称
    •  PID:进程标识符
    •  TID:线程ID
    •  USER:所有者
    •  FD:文件描述符
    •  TYPE:文件类型
    •  DEVICE:磁盘名称
    •  SIZE/OFF:文件大小
    •  NODE:索引节点
    •  NAME:文件名称

    2. FD(文件描述符)详解

    •  cwd:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行修改
    •  txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库
    •  rtd:根目录
    •  0:表示标准输出
    •  1:表示标准输入
    •  2:表示标准错误

    3.文件类型详解

    •  DIR:目录
    •  CHR:字符类型
    •  BLK:块设备类型
    •  UNIX:UNIX域套接字
    •  FIFO:先进先出(FIFO)队列
    •  IPv4:国际协议(IP)套接字

     

    2. 查看指定文件相关的进程信息,即找出此文件的进程

    [root@oldboy ~]# lsof /bin/bash
    COMMAND    PID USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
    mysqld_sa 1298 root txt    REG    8,3   941720 134686 /bin/bash
    bash      5979 root txt    REG    8,3   941720 134686 /bin/bash
    bash      5990 root txt    REG    8,3   941720 134686 /bin/bash

    3. 递归查询某个目录的文件信息

    [root@oldboy share]# lsof +D /usr/local/share
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
    bash    5990 root  cwd    DIR    8,3     4096 129846 /usr/local/share
    lsof    6695 root  cwd    DIR    8,3     4096 129846 /usr/local/share
    lsof    6696 root  cwd    DIR    8,3     4096 129846 /usr/local/share

    4. 不使用+D选项得到与某个文件有关的进程信息的方法

    [root@oldboy share]# lsof |grep '/usr/local/share'       
    bash      5990  root  cwd       DIR                8,3     4096     129846 /usr/local/share
    lsof      6704  root  cwd       DIR                8,3     4096     129846 /usr/local/share
    grep      6705  root  cwd       DIR                8,3     4096     129846 /usr/local/share
    lsof      6706  root  cwd       DIR                8,3     4096     129846 /usr/local/share
    [root@oldboy share]# 

    5. 列出某个用户打开的所有文件相关的进程信息

    [root@oldboy share]# lsof -u root|wc -l 
    508
    [root@oldboy share]# lsof -u root|more -10
    COMMAND    PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    init         1 root  cwd       DIR                8,3     4096          2 /
    init         1 root  rtd       DIR                8,3     4096          2 /
    init         1 root  txt       REG                8,3   150352     139708 /sbin/init
    init         1 root  mem       REG                8,3    65928     132072 /lib64/libnss_file
    s-2.12.so
    init         1 root  mem       REG                8,3  1926480     155325 /lib64/libc-2.12.s
    o
    init         1 root  mem       REG                8,3    93320     155348 /lib64/libgcc_s-4.
    4.7-20120601.so.1

    6. 使用不同方法列出与程序有关的文件

    方法一:使用-c选项

    [root@oldboy share]# lsof -c bash 
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
    bash    5979 root  cwd    DIR    8,3     4096 129797 /root
    bash    5979 root  rtd    DIR    8,3     4096      2 /
    bash    5979 root  txt    REG    8,3   941720 134686 /bin/bash
    bash    5979 root  mem    REG    8,3   157072 155324 /lib64/ld-2.12.so
    bash    5979 root  mem    REG    8,3    22536 141851 /lib64/libdl-2.12.so
    bash    5979 root  mem    REG    8,3  1926480 155325 /lib64/libc-2.12.so
    bash    5979 root  mem    REG    8,3   134792 151195 /lib64/libtinfo.so.5.7
    bash    5979 root  mem    REG    8,3    65928 132072 /lib64/libnss_files-2.12.so
    bash    5979 root    0u   CHR    4,1      0t0   5614 /dev/tty1
    bash    5979 root    1u   CHR    4,1      0t0   5614 /dev/tty1
    bash    5979 root    2u   CHR    4,1      0t0   5614 /dev/tty1
    bash    5979 root  255u   CHR    4,1      0t0   5614 /dev/tty1
    bash    5990 root  cwd    DIR    8,3     4096 129846 /usr/local/share
    bash    5990 root  rtd    DIR    8,3     4096      2 /
    bash    5990 root  txt    REG    8,3   941720 134686 /bin/bash
    bash    5990 root  mem    REG    8,3   157072 155324 /lib64/ld-2.12.so
    bash    5990 root  mem    REG    8,3    22536 141851 /lib64/libdl-2.12.so
    bash    5990 root  mem    REG    8,3  1926480 155325 /lib64/libc-2.12.so
    bash    5990 root  mem    REG    8,3   134792 151195 /lib64/libtinfo.so.5.7
    bash    5990 root  mem    REG    8,3    65928 132072 /lib64/libnss_files-2.12.so
    bash    5990 root    0u   CHR  136,0      0t0      3 /dev/pts/0
    bash    5990 root    1u   CHR  136,0      0t0      3 /dev/pts/0
    bash    5990 root    2u   CHR  136,0      0t0      3 /dev/pts/0
    bash    5990 root  255u   CHR  136,0      0t0      3 /dev/pts/0

    方法二:使用grep重定向

        lsof | grep bash

    方法三:使用-p选项

    [root@oldboy share]# ps aux|grep bash
    root 5979 0.0 0.1 11472 1540 tty1 Ss+ 14:34 0:00 -bash
    root 5990 0.0 0.1 11476 1580 pts/0 Ss 14:35 0:00 -bash
    root 6744 0.0 0.0 6444 688 pts/0 S+ 15:46 0:00 grep --color=auto bash

    [root@oldboy share]# lsof -p 5990
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
    bash 5990 root rtd DIR 8,3 4096 2 /
    bash 5990 root txt REG 8,3 941720 134686 /bin/bash
    bash 5990 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
    bash 5990 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
    bash 5990 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
    bash 5990 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
    bash 5990 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
    bash 5990 root 0u CHR 136,0 0t0 3 /dev/pts/0
    bash 5990 root 1u CHR 136,0 0t0 3 /dev/pts/0
    bash 5990 root 2u CHR 136,0 0t0 3 /dev/pts/0
    bash 5990 root 255u CHR 136,0 0t0 3 /dev/pts/0

    7. 列出所有网络连接,或指定条件的进程

    [root@oldboy share]# lsof -i
    COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     1261  root    3u  IPv4   9347      0t0  TCP *:ssh (LISTEN)
    sshd     1261  root    4u  IPv6   9349      0t0  TCP *:ssh (LISTEN)
    mysqld   1400 mysql   10u  IPv4   9807      0t0  TCP *:mysql (LISTEN)
    dhclient 5614  root    6u  IPv4  31819      0t0  UDP *:bootpc 
    sshd     5986  root    3r  IPv4  32808      0t0  TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)

    列出使用指定网络条件的进程:

    [root@oldboy share]# lsof -i 4
    COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     1261  root    3u  IPv4   9347      0t0  TCP *:ssh (LISTEN)
    mysqld   1400 mysql   10u  IPv4   9807      0t0  TCP *:mysql (LISTEN)
    dhclient 5614  root    6u  IPv4  31819      0t0  UDP *:bootpc 
    sshd     5986  root    3r  IPv4  32808      0t0  TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)

    8. 列出指定目录下使用NFS文件系统的所有文件

    lsof -n /home/zoe 

  • 相关阅读:
    04747_Java语言程序设计(一)_第7章_图形、图像与多媒体
    04747_Java语言程序设计(一)_第6章_图形界面设计(二)
    04747_Java语言程序设计(一)_第5章_图形界面设计(一)
    04747_Java语言程序设计(一)_第4章_数组和字符串
    04747_Java语言程序设计(一)_第3章_面向对象编程基础
    04747_Java语言程序设计(一)_第2章_运算和语句
    04747_Java语言程序设计(一)_第1章_Java语言基础
    记事本写hello world_Java
    Java安装根目录
    input标签不能设置height
  • 原文地址:https://www.cnblogs.com/zoe233/p/11912042.html
Copyright © 2011-2022 走看看