美文网首页
linux命令之lsof

linux命令之lsof

作者: mr_franklin | 来源:发表于2017-03-09 23:53 被阅读129次

    lsof是list open files的缩写。顾名思义,其作用是列出当前系统下所有打开的文件。
    因为linux的一切皆文件的设计哲学,像socket,进程等,在系统中都会被视为文件

    参数含义

    [~]# lsof
    COMMAND     PID   TID     USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    systemd       1           root  cwd       DIR              253,1      4096          2 /
    systemd       1           root  rtd       DIR              253,1      4096          2 /
    systemd       1           root  txt       REG              253,1   1478184     397653 /usr/lib/systemd/systemd
    systemd       1           root  mem       REG              253,1     20032     401603 /usr/lib64/libuuid.so.1.3.0
    systemd       1           root  mem       REG              253,1    252704     401631 /usr/lib64/libblkid.so.1.1.0
    

    每一列表示的含义分别是:

    COMMAD: 命令
    PID:进程id
    TID:线程id
    USER:用户
    FD:文件描述符,比如:cwd当前工作目录;txt程序代码;0标准输入;1标准输出;2标准错误
    TYPE:node类型,比如:sock即socket;DIR目录;IPv4等。
    DEVICE:磁盘名
    SIZE/OFF:文件大小
    NODE:文件标识
    NAME:文件名称

    -a other-options

    表示and(并且的关系)后面需跟至少1个option选项,默认是option选项的并集,加上-a后,取的是交集

    -p {pid}

    列出进程id为{pid}的所有文件

    -d [fd][^fd]

    列出所有fd列满足条件(包含或不包含[^])的文件。
    比如列出不是txt类型的文件 -d ^txt。(txt表示程序代码,二进制文件或共享库)

    -D {dir}

    列出目录{dir}下打开的文件

    +D {dir}

    递归列出目录{dir}下打开的文件

    -i [46][protocol][@hostname|hostaddr][:service|port]

    列出满足条件的文件(与网络相关)

    -u [user][^user]

    列出用户打开的文件,比如 -u ^root,表示列出非root用户打开的文件

    -n

    显示时禁止转换成host名称,即显示ip。

    -c {command}

    显示通过{command}执行的进程所打开的文件

    用法示例

    判断端口是否处于监听状态

    [~]# lsof -i :30200
    COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
    java    7970 root  264u  IPv4 73771077      0t0  TCP *:30200 (LISTEN)
    

    使用netstat -nlp | grep :30200命令也能达到同样效果。

    列出进程在访问的已删除文件

    [~]# lsof +L1
    COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NLINK   NODE NAME
    systemd-j  346 root  txt    REG  253,1   278808     0 397790 /usr/lib/systemd/systemd-journald;58a43c2a (deleted)
    systemd-l  468 root  txt    REG  253,1   584560     0 397448 /usr/lib/systemd/systemd-logind;58a43c2a (deleted)
    java      3374 root    4r   REG  253,1   526844     0 403168 /mnt/deploy/slave.jar (deleted)
    

    +L[number], 会列出链接数量比number小的文件,所以+L1表示链接数量小于1,也就是没有链接的文件。

    列出文件占用情况

    lsof /dev/random:列出哪些进程在使用/dev/random(用于产生随机数)

    相关文章

      网友评论

          本文标题:linux命令之lsof

          本文链接:https://www.haomeiwen.com/subject/slkobttx.html