zoukankan      html  css  js  c++  java
  • lsof命令总结

    一、lsof是什么

    lsof (list open files)是一个列出当前系统打开文件的工具。
    在linux系统环境下,任何事物都可以以文件形式存在,通过文件不仅可以访问常规的数据,还可以访问网络连接和硬件。
    作用:
    用于查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。
    找回/恢复删除的文件。是十分方便的系统监视工具,因为 lsof 需要访问核心内存和各种文件,所以需要root用户执行。

    二、使用说明

    常用参数

    lsof filename 显示打开指定文件的所有进程
    lsof -a 表示两个参数都必须满足时才显示结果
    lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
    lsof -u username 显示所属user进程打开的文件
    lsof -g gid 显示归属gid的进程情况
    lsof +d /DIR/ 显示目录下被进程打开的文件
    lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
    lsof -d FD 显示指定文件描述符的进程
    lsof -n 不将IP转换为hostname,缺省是不加上-n参数
    lsof -i 用以显示符合条件的进程情况
    lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
        46 --> IPv4 or IPv6
        protocol --> TCP or UDP
        hostname --> Internet host name
        hostaddr --> IPv4地址
        service --> /etc/service中的 service name (可以不只一个)
        port --> 端口号 (可以不只一个)
    

    输出格式说明

     COMMAND:进程的名称
     PID:进程标识符
     PPID:父进程标识符(需要指定-R参数)
     USER:进程所有者
     FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
        cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录
        txt :该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
        lnn:library references (AIX);
        er:FD information error (see NAME column);
        jld:jail directory (FreeBSD);
        ltx:shared library text (code and data);
        mxx :hex memory-mapped type number xx.
        m86:DOS Merge mapped file;
        mem:memory-mapped file;
        mmap:memory-mapped device;
        pd:parent directory;
        rtd:root directory;
        tr:kernel trace file (OpenBSD);
        v86  VP/ix mapped file;
        0:表示标准输出
        1:表示标准输入
        2:表示标准错误
        一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等
            u:表示该文件被打开并处于读取/写入模式
            r:表示该文件被打开并处于只读模式
            w:表示该文件被打开并处于
            空格:表示该文件的状态模式为unknow,且没有锁定
            -:表示该文件的状态模式为unknow,且被锁定
        同时在文件状态模式后面,还跟着相关的锁
            N:for a Solaris NFS lock of unknown type;
            r:for read lock on part of the file;
            R:for a read lock on the entire file;
            w:for a write lock on part of the file;(文件的部分写锁)
            W:for a write lock on the entire file;(整个文件的写锁)
            u:for a read and write lock of any length;
            U:for a lock of unknown type;
            x:for an SCO OpenServer Xenix lock on part      of the file;
            X:for an SCO OpenServer Xenix lock on the      entire file;
            space:if there is no lock.
    TYPE:文件类型,如DIR、REG等,常见的文件类型
        DIR:表示目录
        CHR:表示字符类型
        BLK:块设备类型
        UNIX: UNIX 域套接字
        FIFO:先进先出 (FIFO) 队列
        IPv4:网际协议 (IP) 套接字
        IPv6:网际协议 (IP) 套接字
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称
    

    三、常用示例

    1.显示打开文件/usr/sbin/sshd的进程

    lsof /usr/sbin/sshd
    

    2.显示22端口现在运行什么程序

    lsof -i :22
    

    3.显示指定进程名现在打开的文件

    lsof -c php-fpm
    # 列出多个程序多打开的文件信息
    lsof -c mysql -c apache
    

    备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成lsof | grep mysql,但是第一种方法明显比第二种方法要少打几个字符了

    4.查看指定进程号的进程打开了哪些文件

    lsof -p 48
    # 多个进程号
    lsof -p 123,456,789
    # 列出除了某个进程号,其他进程号所打开的文件信
    lsof -p ^1
    
    

    5.显示归属48(GID)的进程情况

    lsof -g 48
    

    6.根据文件夹/etc/php7来查找,但不会打开子目录,用来显示目录下被进程开启的文件

    lsof +d /etc/php7
    

    7.根据文件夹/etc/php7及其子目录查找,用来显示目录下被进程开启的文件

    lsof + /etc/php7
    

    8.列出谁在使用某个特定的tcp/udp端口

    lsof -i udp:55
    lsof -i tcp:80
    

    9.lsof -i 用以显示符合条件的进程情况

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

    46 --> IPv4 or IPv6
    protocol --> TCP or UDP
    hostname --> Internet host name
    hostaddr --> IPv4位置
    service --> /etc/service中的 service name (可以不只一个)
    port --> 端口号 (可以不只一个)
    

    示例

    ➜  ~ lsof -i tcp@10.211.55.25:22
    COMMAND   PID        USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
    ssh     11616 chenqionghe    3u  IPv4 0xb8e5e478b3aae4f      0t0  TCP 10.211.55.2:56920->10.211.55.25:ssh (ESTABLISHED)
    ssh     12247 chenqionghe    3u  IPv4 0xb8e5e479f3fc4cf      0t0  TCP 10.211.55.2:58373->10.211.55.25:ssh (ESTABLISHED)
    ssh     19270 chenqionghe    3u  IPv4 0xb8e5e478b8dfb4f      0t0  TCP 10.211.55.2:62505->10.211.55.25:ssh (ESTABLISHED)
    ssh     19465 chenqionghe    3u  IPv4 0xb8e5e478b3a91cf      0t0  TCP 10.211.55.2:62569->10.211.55.25:ssh (ESTABLISHED)
    ssh     66699 chenqionghe    3u  IPv4 0xb8e5e478c7a41cf      0t0  TCP 10.211.55.2:61433->10.211.55.25:ssh (ESTABLISHED)
    ssh     66842 chenqionghe    3u  IPv4 0xb8e5e479c9637cf      0t0  TCP 10.211.55.2:61434->10.211.55.25:ssh (ESTABLISHED)
    

    10.显示某用户的已经打开的文件(或该用户执行程序已经打开的文件)

    lsof -u php
    或
    lsof -u 0
    

    11.仅打印进程,方便shell脚本调用

    lsof -tc sshd 
    

    12.根据文件描述范围列出文件信息

    lsof -d 2-3
    
    
  • 相关阅读:
    算法系列二:排序
    算法系列一:简单排序
    自己实现数据结构系列五---BinarySearchTree
    自己实现数据结构系列四---Queue
    自己实现数据结构系列三---Stack
    自己实现数据结构系列二---LinkedList
    自己实现数据结构系列一---ArrayList
    栈--数组实现
    RequestHolder工具类
    IP工具类
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/10677179.html
Copyright © 2011-2022 走看看