过程监控——lsof

打印 上一主题 下一主题

主题 994|帖子 994|积分 2982

过程监控——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下令输出字段阐明

  1. [root@Rocky ~]# lsof | head -n3
  2. COMMAND    PID  TID TASKCMD      USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
  3. systemd      1                   root  cwd       DIR              253,0       224        128 /
  4. 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
    2. COMMAND    PID  TID TASKCMD      USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    3. systemd      1                   root  cwd       DIR              253,0       224        128 /
    4. systemd      1                   root  rtd       DIR              253,0       224        128 /
    复制代码
  • 递归检察某个目录的文件信息
    1. [root@Rocky ~]# lsof +D /etc
    2. COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
    3. systemd      1 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    4. systemd      1 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
    5. systemd-u  671 root  mem    REG  253,0 11120017 67841948 /etc/udev/hwdb.bin
    6. systemd-u  671 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    7. systemd-u  671 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
    8. systemd-u  671 root    6r   REG  253,0 11120017 67841948 /etc/udev/hwdb.bin
    9. systemd-l  786 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    10. systemd-l  786 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
    11. (sd-pam)  2135 root  mem    REG  253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
    12. (sd-pam)  2135 root  mem    REG  253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
    复制代码
  • 列出某个用户打开的文件信息
    1. [root@Rocky ~]# lsof -u mysql|tail
    2. mysqld  1673 mysql   35uW     REG              253,0     81920    334586 /var/lib/mysql/#innodb_temp/temp_4.ibt
    3. mysqld  1673 mysql   36uW     REG              253,0     81920    334588 /var/lib/mysql/#innodb_temp/temp_5.ibt
    4. mysqld  1673 mysql   37uW     REG              253,0     81920    334589 /var/lib/mysql/#innodb_temp/temp_6.ibt
    5. mysqld  1673 mysql   38uW     REG              253,0     81920    334590 /var/lib/mysql/#innodb_temp/temp_7.ibt
    6. mysqld  1673 mysql   39uW     REG              253,0     81920    334591 /var/lib/mysql/#innodb_temp/temp_8.ibt
    7. mysqld  1673 mysql   40uW     REG              253,0     81920    324416 /var/lib/mysql/#innodb_temp/temp_9.ibt
    8. mysqld  1673 mysql   41uW     REG              253,0     81920    324417 /var/lib/mysql/#innodb_temp/temp_10.ibt
    9. mysqld  1673 mysql   42uW     REG              253,0    114688  34515287 /var/lib/mysql/mysql/wsrep_cluster.ibd
    10. mysqld  1673 mysql   43uW     REG              253,0    114688  34515289 /var/lib/mysql/mysql/wsrep_streaming_log.ibd
    11. mysqld  1673 mysql   44uW     REG              253,0    114688  34515288 /var/lib/mysql/mysql/wsrep_cluster_members.ibd
    复制代码
  • 列出某个程序进程所打开的文件信息
    1. [root@Rocky ~]# lsof -c mysql | grep IP
    2. mysqld  1673 mysql    9u     IPv4              28623       0t0       TCP *:tram (LISTEN)
    3. mysqld  1673 mysql   27u     IPv6              28642       0t0       TCP *:mysqlx (LISTEN)
    4. mysqld  1673 mysql   29u     IPv6              28645       0t0       TCP *:mysql (LISTEN)
    复制代码
  • 列出多个进程多个打开的文件信息
    1. [root@Rocky ~]# lsof -c mysql -i:8080 | head -n10
    2. COMMAND  PID  USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
    3. mysqld  1673 mysql  cwd       DIR              253,0      4096 101651191 /var/lib/mysql
    4. mysqld  1673 mysql  rtd       DIR              253,0       224       128 /
    5. mysqld  1673 mysql  txt       REG              253,0  67906624 101651146 /usr/sbin/mysqld
    6. mysqld  1673 mysql  mem       REG              253,0    413280 101651030 /usr/lib64/mysql/plugin/component_percona_telemetry.so
    7. mysqld  1673 mysql  DEL       REG               0,18               28639 /[aio]
    8. mysqld  1673 mysql  DEL       REG               0,18               28638 /[aio]
    9. mysqld  1673 mysql  DEL       REG               0,18               28637 /[aio]
    10. mysqld  1673 mysql  DEL       REG               0,18               28636 /[aio]
    11. mysqld  1673 mysql  DEL       REG               0,18               28635 /[aio]
    复制代码
  • 列出某个IP的毗连信息
    1. [root@Rocky ~]# lsof -i @Rocky
    2. COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    3. sshd    2116 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    4. sshd    2128 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    5. sshd    2143 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    6. sshd    2170 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    复制代码
  • 根据IP分类显示当前环境的毗连信息
    1. ## 列出IPv4
    2. [root@Rocky ~]# lsof -i 4
    3. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    4. sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    5. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    6. sshd    2116  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    7. sshd    2128  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    8. sshd    2143  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    9. sshd    2170  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    10. ## 列出IPv6
    11. [root@Rocky ~]# lsof -i 6
    12. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    13. sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    14. mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    15. mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)
    复制代码
  • 列出TCP/UDP的毗连信息
    1. [root@Rocky ~]# lsof -i tcp
    2. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    3. sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    4. sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    5. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    6. mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    7. mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)
    8. sshd    2116  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    9. sshd    2128  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    10. sshd    2143  root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    11. sshd    2170  root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    12. [root@Rocky ~]# lsof -i udp
    13. [root@Rocky ~]# lsof -i tcp:22
    14. COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    15. sshd     795 root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    16. sshd     795 root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    17. sshd    2116 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    18. sshd    2128 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    19. sshd    2143 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    20. sshd    2170 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    复制代码
  • 列出除了某个用户外的被打开的文件信息
    1. [root@Rocky ~]# lsof -u ^root|head -n10
    2. COMMAND    PID  TID TASKCMD      USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
    3. dbus-daem  782                   dbus  cwd       DIR              253,0       224       128 /
    4. dbus-daem  782                   dbus  rtd       DIR              253,0       224       128 /
    5. dbus-daem  782                   dbus  txt       REG              253,0    245456  67794611 /usr/bin/dbus-daemon
    6. dbus-daem  782                   dbus  mem       REG              253,0    948648 101245581 /usr/lib64/libnss_systemd.so.2
    7. dbus-daem  782                   dbus  mem       REG              253,0     46408 101443687 /usr/lib64/libnss_sss.so.2
    8. dbus-daem  782                   dbus  mem       REG              253,0     54360 100673090 /usr/lib64/libnss_files-2.28.so
    9. dbus-daem  782                   dbus  mem       REG              253,0    138792 100686630 /usr/lib64/libgpg-error.so.0.24.2
    10. dbus-daem  782                   dbus  mem       REG              253,0     33488 100686674 /usr/lib64/libuuid.so.1.3.0
    11. dbus-daem  782                   dbus  mem       REG              253,0    343608 101245590 /usr/lib64/libblkid.so.1.1.0
    复制代码
  • 列出某个用户的所有活泼的网络端口
    1. [root@Rocky ~]# lsof -a -u root -i
    2. COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    3. sshd     795 root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    4. sshd     795 root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    5. sshd    2116 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    6. sshd    2128 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    7. sshd    2143 root    4u  IPv4  30264      0t0  TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
    8. sshd    2170 root    4u  IPv4  31468      0t0  TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
    复制代码
  • 通过进程号显示该进程打开的文件
    1. [root@Rocky ~]# ps -ef | grep mysql
    2. mysql       1673       1  1 15:56 ?        00:00:45 /usr/sbin/mysqld --wsrep_start_position=b5efac34-027b-11f0-9438-c63bffe159ec:6
    3. root        2350    2144  0 17:10 pts/0    00:00:00 grep --color=auto mysql
    4. [root@Rocky ~]# lsof -p 1673 | head -n3
    5. COMMAND  PID  USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
    6. mysqld  1673 mysql  cwd       DIR              253,0      4096 101651191 /var/lib/mysql
    7. mysqld  1673 mysql  rtd       DIR              253,0       224       128 /
    复制代码
  • 列出COMMAND列中包罗字符串" mysql",且文件描符的类型为mem,用户为root的文件信息
    1. [root@Rocky ~]# lsof -c mysql -a -d men -u root
    复制代码
  • 列出被进程号为1673的进程所打开的所有IPV4 network files
    1. [root@Rocky ~]# lsof -i 4 -a -p 1673
    2. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    3. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    复制代码
  • 列出被进程号为1673的进程所打开的所有IPV4 network files并且每隔3秒不断的执行
    1. [root@Rocky ~]# lsof -i 4 -a -p 1673 -r 3
    2. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    3. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    4. =======
    5. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    6. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    7. =======
    8. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    9. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    10. =======
    复制代码
  • 找出正等候毗连的端口
    1. [root@Rocky ~]# lsof -i -sTCP:LISTEN
    2. COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    3. sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    4. sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    5. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    6. mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    7. mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)
    8. [root@Rocky ~]# lsof -i | grep -i LISTEN
    9. sshd     795  root    3u  IPv4  26376      0t0  TCP *:ssh (LISTEN)
    10. sshd     795  root    4u  IPv6  26378      0t0  TCP *:ssh (LISTEN)
    11. mysqld  1673 mysql    9u  IPv4  28623      0t0  TCP *:tram (LISTEN)
    12. mysqld  1673 mysql   27u  IPv6  28642      0t0  TCP *:mysqlx (LISTEN)
    13. mysqld  1673 mysql   29u  IPv6  28645      0t0  TCP *:mysql (LISTEN)
    复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表