• lsof 命令小结


    在UNIX系统下, 可以把任何一个对象看成是对象。如一个正在运行的进程(/proc/run/sys … etc)。访问文件不仅仅指的是常规的文件(regular, binary), 也有许多其他类型的文件,如block,charcater,FIFO,unix socket, socket等。当你通过ls命令,来查看指定目录下的目录清单的时候,可以查看一部分文件类型的目录清单,但有些情况不存在对应得目录清单, 如TCP和UDP socket就是这样的例子。但后台为该应用程序提供一个文件描述符,这个文件描述符为应用程序和操作系统提供操作的接口。

    lsof的基本用法

    直接在命令行执行lsof, 你会得到类似如下的信息:

    COMMAND     PID       USER   FD      TYPE             DEVICE     SIZE       NODE NAME
    init          1       root  cwd       DIR              104,1     4096          2 /
    init          1       root  rtd       DIR              104,1     4096          2 /
    init          1       root  txt       REG              104,1    37384    2318357 /sbin/init
    init          1       root  mem       REG              104,1    14696    3573005 /lib/libdl-2.11.2.so
    init          1       root  mem       REG              104,1  1432968    3573006 /lib/libc-2.11.2.so
    init          1       root  mem       REG              104,1   109464    3571777 /lib/libselinux.so.1
    init          1       root  mem       REG              104,1   237168    3571778 /lib/libsepol.so.1
    init          1       root  mem       REG              104,1   128744    3573018 /lib/ld-2.11.2.so
    init          1       root  10u      FIFO               0,13                2708 /dev/initctl
    kthreadd      2       root  cwd       DIR              104,1     4096          2 /
    kthreadd      2       root  rtd       DIR              104,1     4096          2 /
    kthreadd      2       root  txt   unknown                                        /proc/2/exe

    输出的字段含义:

    COMMAND-- 命令名称  PID-- 进程ID   USER-- 进程的拥有者

    FD和TYPE字段包含关于该文件如何使用的更多信息, FD表示文件描述符,应用程序通过文件描述符来访问文件。Type列提供了关于文件的更多描述。

    FD字段的值“CWD”表示当前应用程序的工作目录, “TXT”表示程序的txt或data段。 而在上面的例子中“10u” 表示init程序以FIFO方式打开/dev/initctl, 其文件描述符为10, 并且“u”表示该文件处于读入/写出模式,其他的还有“r”和“u”分别表示以只读和只写模式打开。

    与FD字段相比, TYPE字段更简单些, 可能的值为DIR(目录)REG(文件),CHR(字符设备),BLK(块设备),UNIX(Unix domain socket),FIFO(命名管道), IPv4(internet 套接字)。

    lsof的实际使用场景:

    lsof –a –p 605 –d ^txt

    -a 表示与的关系,也就是-p 605 和 –d ^txt二者都要成立。

    lsof查看网络连接:

    网络连接也是文件,因此也可以通过lsof来获取他们的信息。如果你只知道相应的端口,如80, 则可以用lsof –i :80 来进行套接字收索。

    lsof –i :80  查看监听80端口的进程

    COMMAND  PID     USER         FD    TYPE  DEVICE SIZE NODE NAME
    apache2          5177     root             4u    IPv6   6484160             TCP  *:www (LISTEN)
    apache2          6373   www-data    4u     IPv6   6484160             TCP  *:www (LISTEN)
    apache2          6374   www-data    4u     IPv6   6484160              TCP  *:www (LISTEN)

    原文出自如下连接:

    http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html

  • 相关阅读:
    Nginx支持WebSocket反向代理-学习小结
    CentOS6.9下升级默认的OpenSSH操作记录(升级到OpenSSH_7.6p1)
    CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)
    Docker容器内部端口映射到外部宿主机端口
    Linux下分布式系统以及CAP理论分析
    C/ C++ 快速上手
    YUV视频格式详解(翻译自微软文档)
    YUV详解
    阿里云ECS使用vnc远程连接(Ubuntu + CentOS)
    oh-my-zsh: 让终端飞
  • 原文地址:https://www.cnblogs.com/yuboyue/p/2109866.html
Copyright © 2020-2023  润新知