欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 过程监控——lsof

过程监控——lsof

2025/3/23 5:34:19 来源:https://blog.csdn.net/m0_74536424/article/details/146406501  浏览:    关键词:过程监控——lsof

过程监控——lsof

​ 进程监控是对 IT 系统或组织内进程的持续观察和分析,以确保最佳性能、效率和合规性。它涉及跟踪系统上运行的各个进程或应用程序的关键指标、资源利用率和行为。这种做法有助于在异常、瓶颈或潜在问题影响整体系统性能或用户体验之前识别它们。进程监控工具通常提供有关 CPU 使用率、内存消耗、I/O 操作和线程活动的实时数据。它们通常包括用于警报、记录和可视化进程数据的功能。在现代 IT 环境中,进程监控对于维护系统稳定性、优化资源分配、解决性能问题以及支持复杂分布式系统中的容量规划至关重要。

Lsof 在其标准输出文件中列出了有关进程打开的文件的信息。

一、lsof命令简介

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TCP和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
lsof(list open files)是一个在 Unix 和类 Unix 系统(如 Linux)中非常有用的命令行工具,其主要功能是列出当前系统中所有被打开的文件信息。在 Unix/Linux 系统里,很多事物都可被当作文件处理,像常规文件、目录、网络套接字、设备文件等,所以lsof能提供丰富的系统运行状态信息。

二、lsof命令功能

  • 排查文件占用问题:当你尝试删除或移动某个文件却失败时,借助lsof可以找出是哪个进程正在使用该文件。
  • 网络连接分析:能够查看哪些进程正在使用网络套接字,这有助于发现异常的网络连接或者监控网络服务的运行状况。
  • 系统资源监控:通过查看打开的文件和设备,了解系统中各个进程的资源使用情况。

三、lsof命令输出字段说明

[root@Rocky ~]# lsof | head -n3
COMMAND    PID  TID TASKCMD      USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1                   root  cwd       DIR              253,0       224        128 /
systemd      1                   root  rtd       DIR              253,0       224        128 /
  • COMMAND:打开文件的进程名称
  • PID:进程的ID
  • USER:打开文件的用户
  • FD:文件描述符,它是一个整数,用于标识进程内的文件
  • TYPE:文件的类型,如REG(常规文件)、DIR(目录)、CHR(字符设备)、BLK(块设备)、IPv4(IPv4 套接字)等。
  • DEVICE:设备号,指定磁盘的名称
  • SIZE/OFF:文件的大小或偏移量
  • NODE:文件的inode号
  • NAME:文件的名称或网络连接信息

四、lsof命令常见参数及示例

参数解释
-p <pid>根据进程ID列出该进程打开的所有文件
-u <username>根据用户名列出该用户打开的所有文件
-d <fd>指定文件描述符(FD),列出使用该文件描述符的进程
-c <cmd>列出命令名以指定字符串开头的进程所打开的文件
/path/to/file直接在命令后添加文件路径,可列出所有打开该文件的进程
-i
-i <protocol>
-i :<port>
列出所有打开的网络连接,包括 TCP 和 UDP 连接
指定网络协议,列出使用该协议的网络连接
列出使用指定端口的网络连接
-a逻辑与(and);当不使用-a时,逻辑或(or)
-r <time>以time(秒)周期性的执行命令并输出结果,默认15s
-c <cmd>列出命令名以指定字符串开头的进程所打开的文件
-s用于指定网络套接字的状态。
  1. 显示开启文件的进程

    [root@Rocky ~]# lsof | head -n3
    COMMAND    PID  TID TASKCMD      USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    systemd      1                   root  cwd       DIR              253,0       224        128 /
    systemd      1                   root  rtd       DIR              253,0       224        128 /
    
  2. 递归查看某个目录的文件信息

    [root@Rocky ~]# lsof +D /etc
    COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
    systemd      1 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    systemd      1 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
    systemd-u  671 root  mem    REG  253,0 11120017 67841948 /etc/udev/hwdb.bin
    systemd-u  671 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    systemd-u  671 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
    systemd-u  671 root    6r   REG  253,0 11120017 67841948 /etc/udev/hwdb.bin
    systemd-l  786 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    systemd-l  786 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
    (sd-pam)  2135 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    (sd-pam)  2135 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
  3. 列出某个用户打开的文件信息

    [root@Rocky ~]# lsof -u mysql|tail
    mysqld  1673 mysql   35uW     REG              253,0     81920    334586 /var/lib/mysql/#innodb_temp/temp_4.ibt
    mysqld  1673 mysql   36uW     REG              253,0     81920    334588 /var/lib/mysql/#innodb_temp/temp_5.ibt
    mysqld  1673 mysql   37uW     REG              253,0     81920    334589 /var/lib/mysql/#innodb_temp/temp_6.ibt
    mysqld  1673 mysql   38uW     REG              253,0     81920    334590 /var/lib/mysql/#innodb_temp/temp_7.ibt
    mysqld  1673 mysql   39uW     REG              253,0     81920    334591 /var/lib/mysql/#innodb_temp/temp_8.ibt
    mysqld  1673 mysql   40uW     REG              253,0     81920    324416 /var/lib/mysql/#innodb_temp/temp_9.ibt
    mysqld  1673 mysql   41uW     REG              253,0     81920    324417 /var/lib/mysql/#innodb_temp/temp_10.ibt
    mysqld  1673 mysql   42uW     REG              253,0    114688  34515287 /var/lib/mysql/mysql/wsrep_cluster.ibd
    mysqld  1673 mysql   43uW     REG              253,0    114688  34515289 /var/lib/mysql/mysql/wsrep_streaming_log.ibd
    mysqld  1673 mysql   44uW     REG              253,0    114688  34515288 /var/lib/mysql/mysql/wsrep_cluster_members.ibd
  4. 列出某个程序进程所打开的文件信息

    [root@Rocky ~]# lsof -c mysql | grep IP
    mysqld  1673 mysql    9u     IPv4              28623       0t0       TCP *:tram (LISTEN)
    mysqld  1673 mysql   27u     IPv6              28642       0t0       TCP *:mysqlx (LISTEN)
    mysqld  1673 mysql   29u     IPv6              28645       0t0       TCP *:mysql (LISTEN)
    
  5. 列出多个进程多个打开的文件信息

    [root@Rocky ~]# lsof -c mysql -i:8080 | head -n10
    COMMAND  PID  USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
    mysqld  1673 mysql  cwd       DIR              253,0      4096 101651191 /var/lib/mysql
    mysqld  1673 mysql  rtd       DIR              253,0       224       128 /
    mysqld  1673 mysql  txt       REG              253,0  67906624 101651146 /usr/sbin/mysqld
    mysqld  1673 mysql  mem       REG              253,0    413280 101651030 /usr/lib64/mysql/plugin/component_percona_telemetry.so
    mysqld  1673 mysql  DEL       REG               0,18               28639 /[aio]
    mysqld  1673 mysql  DEL       REG               0,18               28638 /[aio]
    mysqld  1673 mysql  DEL       REG               0,18               28637 /[aio]
    mysqld  1673 mysql  DEL       REG               0,18               28636 /[aio]
    mysqld  1673 mysql  DEL       REG               0,18               28635 /[aio]
  6. 列出某个IP的连接信息

    [root@Rocky ~]# lsof -i @Rocky
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd    2116 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2128 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    sshd    2143 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2170 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    
  7. 根据IP分类显示当前环境的连接信息

    ## 列出IPv4
    [root@Rocky ~]# lsof -i 4
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    sshd    2116  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2128  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    sshd    2143  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2170  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    ## 列出IPv6
    [root@Rocky ~]# lsof -i 6
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)
  8. 列出TCP/UDP的连接信息

    [root@Rocky ~]# lsof -i tcp
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)
    sshd    2116  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2128  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    sshd    2143  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2170  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    [root@Rocky ~]# lsof -i udp
    [root@Rocky ~]# lsof -i tcp:22
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     795 root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    sshd     795 root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    sshd    2116 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2128 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    sshd    2143 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2170 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    
  9. 列出除了某个用户外的被打开的文件信息

    [root@Rocky ~]# lsof -u ^root|head -n10
    COMMAND    PID  TID TASKCMD      USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
    dbus-daem  782                   dbus  cwd       DIR              253,0       224       128 /
    dbus-daem  782                   dbus  rtd       DIR              253,0       224       128 /
    dbus-daem  782                   dbus  txt       REG              253,0    245456  67794611 /usr/bin/dbus-daemon
    dbus-daem  782                   dbus  mem       REG              253,0    948648 101245581 /usr/lib64/libnss_systemd.so.2
    dbus-daem  782                   dbus  mem       REG              253,0     46408 101443687 /usr/lib64/libnss_sss.so.2
    dbus-daem  782                   dbus  mem       REG              253,0     54360 100673090 /usr/lib64/libnss_files-2.28.so
    dbus-daem  782                   dbus  mem       REG              253,0    138792 100686630 /usr/lib64/libgpg-error.so.0.24.2
    dbus-daem  782                   dbus  mem       REG              253,0     33488 100686674 /usr/lib64/libuuid.so.1.3.0
    dbus-daem  782                   dbus  mem       REG              253,0    343608 101245590 /usr/lib64/libblkid.so.1.1.0
  10. 列出某个用户的所有活跃的网络端口

    [root@Rocky ~]# lsof -a -u root -i
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     795 root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    sshd     795 root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    sshd    2116 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2128 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    sshd    2143 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    sshd    2170 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
  11. 通过进程号显示该进程打开的文件

    [root@Rocky ~]# ps -ef | grep mysql
    mysql       1673       1  1 15:56 ?        00:00:45 /usr/sbin/mysqld --wsrep_start_position=b5efac34-027b-11f0-9438-c63bffe159ec:6
    root        2350    2144  0 17:10 pts/0    00:00:00 grep --color=auto mysql
    [root@Rocky ~]# lsof -p 1673 | head -n3
    COMMAND  PID  USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
    mysqld  1673 mysql  cwd       DIR              253,0      4096 101651191 /var/lib/mysql
    mysqld  1673 mysql  rtd       DIR              253,0       224       128 /
    
  12. 列出COMMAND列中包含字符串" mysql",且文件描符的类型为mem,用户为root的文件信息

    [root@Rocky ~]# lsof -c mysql -a -d men -u root
    
  13. 列出被进程号为1673的进程所打开的所有IPV4 network files

    [root@Rocky ~]# lsof -i 4 -a -p 1673
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    
  14. 列出被进程号为1673的进程所打开的所有IPV4 network files并且每隔3秒不断的执行

    [root@Rocky ~]# lsof -i 4 -a -p 1673 -r 3
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    =======
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    =======
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    =======
    
  15. 找出正等候连接的端口

    [root@Rocky ~]# lsof -i -sTCP:LISTEN
    COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)
    [root@Rocky ~]# lsof -i | grep -i LISTEN
    sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词