络腮胡菲菲 发表于 2025-3-21 07:51:39

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

# lsof | head -n3
COMMAND    PIDTID TASKCMD      USER   FD      TYPE             DEVICESIZE/OFF       NODE NAME
systemd      1                   rootcwd       DIR            253,0       224      128 /
systemd      1                   rootrtd       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用于指定网络套接字的状态。
[*] 显示开启文件的进程
# lsof | head -n3
COMMAND    PIDTID TASKCMD      USER   FD      TYPE             DEVICESIZE/OFF       NODE NAME
systemd      1                   rootcwd       DIR            253,0       224      128 /
systemd      1                   rootrtd       DIR            253,0       224      128 /

[*] 递归检察某个目录的文件信息
# lsof +D /etc
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
systemd      1 rootmem    REG253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
systemd      1 rootmem    REG253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
systemd-u671 rootmem    REG253,0 11120017 67841948 /etc/udev/hwdb.bin
systemd-u671 rootmem    REG253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
systemd-u671 rootmem    REG253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
systemd-u671 root    6r   REG253,0 11120017 67841948 /etc/udev/hwdb.bin
systemd-l786 rootmem    REG253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
systemd-l786 rootmem    REG253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin
(sd-pam)2135 rootmem    REG253,0    19084 68793357 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
(sd-pam)2135 rootmem    REG253,0   567207 68993028 /etc/selinux/targeted/contexts/files/file_contexts.bin


[*] 列出某个用户打开的文件信息
# lsof -u mysql|tail
mysqld1673 mysql   35uW   REG            253,0   81920    334586 /var/lib/mysql/#innodb_temp/temp_4.ibt
mysqld1673 mysql   36uW   REG            253,0   81920    334588 /var/lib/mysql/#innodb_temp/temp_5.ibt
mysqld1673 mysql   37uW   REG            253,0   81920    334589 /var/lib/mysql/#innodb_temp/temp_6.ibt
mysqld1673 mysql   38uW   REG            253,0   81920    334590 /var/lib/mysql/#innodb_temp/temp_7.ibt
mysqld1673 mysql   39uW   REG            253,0   81920    334591 /var/lib/mysql/#innodb_temp/temp_8.ibt
mysqld1673 mysql   40uW   REG            253,0   81920    324416 /var/lib/mysql/#innodb_temp/temp_9.ibt
mysqld1673 mysql   41uW   REG            253,0   81920    324417 /var/lib/mysql/#innodb_temp/temp_10.ibt
mysqld1673 mysql   42uW   REG            253,0    11468834515287 /var/lib/mysql/mysql/wsrep_cluster.ibd
mysqld1673 mysql   43uW   REG            253,0    11468834515289 /var/lib/mysql/mysql/wsrep_streaming_log.ibd
mysqld1673 mysql   44uW   REG            253,0    11468834515288 /var/lib/mysql/mysql/wsrep_cluster_members.ibd


[*] 列出某个程序进程所打开的文件信息
# lsof -c mysql | grep IP
mysqld1673 mysql    9u   IPv4            28623       0t0       TCP *:tram (LISTEN)
mysqld1673 mysql   27u   IPv6            28642       0t0       TCP *:mysqlx (LISTEN)
mysqld1673 mysql   29u   IPv6            28645       0t0       TCP *:mysql (LISTEN)

[*] 列出多个进程多个打开的文件信息
# lsof -c mysql -i:8080 | head -n10
COMMANDPIDUSER   FD      TYPE             DEVICESIZE/OFF      NODE NAME
mysqld1673 mysqlcwd       DIR            253,0      4096 101651191 /var/lib/mysql
mysqld1673 mysqlrtd       DIR            253,0       224       128 /
mysqld1673 mysqltxt       REG            253,067906624 101651146 /usr/sbin/mysqld
mysqld1673 mysqlmem       REG            253,0    413280 101651030 /usr/lib64/mysql/plugin/component_percona_telemetry.so
mysqld1673 mysqlDEL       REG               0,18               28639 /
mysqld1673 mysqlDEL       REG               0,18               28638 /
mysqld1673 mysqlDEL       REG               0,18               28637 /
mysqld1673 mysqlDEL       REG               0,18               28636 /
mysqld1673 mysqlDEL       REG               0,18               28635 /


[*] 列出某个IP的毗连信息
# lsof -i @Rocky
COMMANDPID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    2116 root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2128 root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
sshd    2143 root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2170 root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)

[*] 根据IP分类显示当前环境的毗连信息
## 列出IPv4
# lsof -i 4
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd   795root    3uIPv426376      0t0TCP *:ssh (LISTEN)
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)
sshd    2116root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2128root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
sshd    2143root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2170root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
## 列出IPv6
# lsof -i 6
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd   795root    4uIPv626378      0t0TCP *:ssh (LISTEN)
mysqld1673 mysql   27uIPv628642      0t0TCP *:mysqlx (LISTEN)
mysqld1673 mysql   29uIPv628645      0t0TCP *:mysql (LISTEN)


[*] 列出TCP/UDP的毗连信息
# lsof -i tcp
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd   795root    3uIPv426376      0t0TCP *:ssh (LISTEN)
sshd   795root    4uIPv626378      0t0TCP *:ssh (LISTEN)
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)
mysqld1673 mysql   27uIPv628642      0t0TCP *:mysqlx (LISTEN)
mysqld1673 mysql   29uIPv628645      0t0TCP *:mysql (LISTEN)
sshd    2116root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2128root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
sshd    2143root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2170root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
# lsof -i udp
# lsof -i tcp:22
COMMANDPID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd   795 root    3uIPv426376      0t0TCP *:ssh (LISTEN)
sshd   795 root    4uIPv626378      0t0TCP *:ssh (LISTEN)
sshd    2116 root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2128 root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
sshd    2143 root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2170 root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)

[*] 列出除了某个用户外的被打开的文件信息
# lsof -u ^root|head -n10
COMMAND    PIDTID TASKCMD      USER   FD      TYPE             DEVICESIZE/OFF      NODE NAME
dbus-daem782                   dbuscwd       DIR            253,0       224       128 /
dbus-daem782                   dbusrtd       DIR            253,0       224       128 /
dbus-daem782                   dbustxt       REG            253,0    24545667794611 /usr/bin/dbus-daemon
dbus-daem782                   dbusmem       REG            253,0    948648 101245581 /usr/lib64/libnss_systemd.so.2
dbus-daem782                   dbusmem       REG            253,0   46408 101443687 /usr/lib64/libnss_sss.so.2
dbus-daem782                   dbusmem       REG            253,0   54360 100673090 /usr/lib64/libnss_files-2.28.so
dbus-daem782                   dbusmem       REG            253,0    138792 100686630 /usr/lib64/libgpg-error.so.0.24.2
dbus-daem782                   dbusmem       REG            253,0   33488 100686674 /usr/lib64/libuuid.so.1.3.0
dbus-daem782                   dbusmem       REG            253,0    343608 101245590 /usr/lib64/libblkid.so.1.1.0


[*] 列出某个用户的所有活泼的网络端口
# lsof -a -u root -i
COMMANDPID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd   795 root    3uIPv426376      0t0TCP *:ssh (LISTEN)
sshd   795 root    4uIPv626378      0t0TCP *:ssh (LISTEN)
sshd    2116 root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2128 root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)
sshd    2143 root    4uIPv430264      0t0TCP pxc1:ssh->172.25.254.1:64076 (ESTABLISHED)
sshd    2170 root    4uIPv431468      0t0TCP pxc1:ssh->172.25.254.1:64094 (ESTABLISHED)


[*] 通过进程号显示该进程打开的文件
# ps -ef | grep mysql
mysql       1673       11 15:56 ?      00:00:45 /usr/sbin/mysqld --wsrep_start_position=b5efac34-027b-11f0-9438-c63bffe159ec:6
root      2350    21440 17:10 pts/0    00:00:00 grep --color=auto mysql
# lsof -p 1673 | head -n3
COMMANDPIDUSER   FD      TYPE             DEVICESIZE/OFF      NODE NAME
mysqld1673 mysqlcwd       DIR            253,0      4096 101651191 /var/lib/mysql
mysqld1673 mysqlrtd       DIR            253,0       224       128 /

[*] 列出COMMAND列中包罗字符串" mysql",且文件描符的类型为mem,用户为root的文件信息
# lsof -c mysql -a -d men -u root

[*] 列出被进程号为1673的进程所打开的所有IPV4 network files
# lsof -i 4 -a -p 1673
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)

[*] 列出被进程号为1673的进程所打开的所有IPV4 network files并且每隔3秒不断的执行
# lsof -i 4 -a -p 1673 -r 3
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)
=======
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)
=======
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)
=======

[*] 找出正等候毗连的端口
# lsof -i -sTCP:LISTEN
COMMANDPIDUSER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd   795root    3uIPv426376      0t0TCP *:ssh (LISTEN)
sshd   795root    4uIPv626378      0t0TCP *:ssh (LISTEN)
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)
mysqld1673 mysql   27uIPv628642      0t0TCP *:mysqlx (LISTEN)
mysqld1673 mysql   29uIPv628645      0t0TCP *:mysql (LISTEN)
# lsof -i | grep -i LISTEN
sshd   795root    3uIPv426376      0t0TCP *:ssh (LISTEN)
sshd   795root    4uIPv626378      0t0TCP *:ssh (LISTEN)
mysqld1673 mysql    9uIPv428623      0t0TCP *:tram (LISTEN)
mysqld1673 mysql   27uIPv628642      0t0TCP *:mysqlx (LISTEN)
mysqld1673 mysql   29uIPv628645      0t0TCP *:mysql (LISTEN)



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 过程监控——lsof