• centos8平台使用lsof


    一,lsof的用途

    lsof,List Open Files 列出当前系统打开文件的工具。

    在linux环境下,任何事物都以文件的形式存在,

    所以lsof通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,lsof安装:

    1,查看lsof所属的包

    [root@blog ~]# whereis lsof
    lsof: /usr/bin/lsof /usr/share/man/man1/lsof.1.gz
    
    [root@blog ~]# rpm -qf /usr/bin/lsof
    lsof-4.91-2.el8.x86_64

    2,如果提示找不到lsof命令,可以用yum安装

    [root@blog ~]# yum install lsof

    三,查看lsof的版本和帮助

    1,查看版本

    [root@blog ~]# lsof -v
    lsof version information:
        revision: 4.91
    ...

    2,查看帮助:

    [root@blog ~]# lsof -h 

    四,lsof的应用例子:

    1,查看系统中所有打开的文件

    [root@blog ~]# lsof

    2,查看某个用户打开的文件

    # -u 参数用来指定要查看的用户

    [root@blog ~]# lsof -u mysql
    COMMAND     PID  USER   FD      TYPE             DEVICE   SIZE/OFF      NODE NAME
    mysqld_sa 17246 mysql  cwd       DIR              253,1        129 201372497 /usr/local/soft/mysql
    mysqld_sa 17246 mysql  rtd       DIR              253,1        272       128 /
    mysqld_sa 17246 mysql  txt       REG              253,1    1219216  16999680 /usr/bin/bash 
    ...

    3,查看有哪些进程正在打开某个文件?

    [root@blog ~]# lsof /data/mysql/log/mysql-slow.log
    COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
    mysqld  17700 mysql   29w   REG  253,1    11018 34357947 /data/mysql/log/mysql-slow.log

    说明:lsof后加文件名即可列出正在打开文件的进程

    4,列出某个进程正在打开的文件(最常用的用法)

    # -p 指定要查看的进程

    [root@blog ~]# lsof -p 17700
    COMMAND   PID  USER   FD      TYPE             DEVICE   SIZE/OFF      NODE NAME
    mysqld  17700 mysql  cwd       DIR              253,1       4096 302055050 /data/mysql/data
    mysqld  17700 mysql  rtd       DIR              253,1        272       128 /
    mysqld  17700 mysql  txt       REG              253,1 1078700088 218133053 /usr/local/soft/mysql/bin/mysqld
    mysqld  17700 mysql  DEL       REG               0,17              3207767 /[aio]
    mysqld  17700 mysql  DEL       REG               0,17              3207766 /[aio]
    mysqld  17700 mysql  DEL       REG               0,17              3207765 /[aio]
    mysqld  17700 mysql  DEL       REG               0,17              3207764 /[aio] 
    ...

    说明:

    输出字段的说明:

    FD 表示文件描述符号:

    如果值是3w,表示:它的文件描述符是 3 号,而 3 后面的 w ,表示以写的方式打开

    TYPE 表示文件类型

    NAME 表示文件路径

    5,列出多个进程正在打开的文件(最常用的用法)

    [root@blog ~]# lsof -p 7492,7493,7494 

    6,列出所有的网络连接

    # -i 用来查看网络连接的进程

    [root@blog ~]# lsof -i
    COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    NetworkMa   834   root   18u  IPv4   21344      0t0  UDP blog:bootpc
    nginx      7491   root   22u  IPv4 3087363      0t0  TCP *:http (LISTEN)
    nginx      7491   root   23u  IPv4 3087364      0t0  TCP *:54321 (LISTEN)
    nginx      7492  nginx   22u  IPv4 3087363      0t0  TCP *:http (LISTEN) 

    7,指定的连接的类型:

    列出所有tcp 网络连接信息

    [root@blog ~]# lsof -i tcp

    列出所有udp 网络连接信息

    [root@blog ~]# lsof -i udp

    8,列出在使用某个端口的进程

    #  -i :port用来指定要查看的端口

    [root@blog ~]# lsof -i :3306
    COMMAND   PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    mysqld  17700 mysql   31u  IPv6 3206926      0t0  TCP *:mysql (LISTEN)

    9,列出nginx进程现在打开的文件

    # -c 指定要查看的进程的名字

    [root@blog ~]# lsof -c nginx

    10,-n参数:不将IP转换为hostname,默认会进行转换,即默认不加上-n参数,

    [root@blog ~]# lsof -n -i :3306
    COMMAND   PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    mysqld  17700 mysql   31u  IPv6 3206926      0t0  TCP *:mysql (LISTEN)

    11,列出所有使用fd为指定值的进程

    # -d:指定文件描述符的值

    [root@blog ~]# lsof -d 1 
    COMMAND     PID           USER   FD   TYPE             DEVICE SIZE/OFF     NODE NAME
    systemd       1           root    1u   CHR                1,3      0t0    11236 /dev/null
    systemd-j   513           root    1w   CHR                1,3      0t0    11236 /dev/null 

     五,查看centos的版本:

    [root@blog ~]# cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core) 
  • 相关阅读:
    SQL学习日志
    程序员之路──如何学习C语言并精通C语言
    using用法
    c#中的接口与类的区别
    用c#来实现一种行列式的计算优化
    python 切换目录
    如何光盘自动运行html?
    nsis 安装脚本示例(转)
    python sys.path.append
    python 面向对象初认识
  • 原文地址:https://www.cnblogs.com/architectforest/p/12638773.html
Copyright © 2020-2023  润新知