过程监控——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用于指定网络套接字的状态。
- 显示开启文件的进程
- [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 /
复制代码 - 递归检察某个目录的文件信息
- [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
复制代码 - 列出某个用户打开的文件信息
- [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
复制代码 - 列出某个程序进程所打开的文件信息
- [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)
复制代码 - 列出多个进程多个打开的文件信息
- [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]
复制代码 - 列出某个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)
复制代码 - 根据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)
复制代码 - 列出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)
复制代码 - 列出除了某个用户外的被打开的文件信息
- [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
复制代码 - 列出某个用户的所有活泼的网络端口
- [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)
复制代码 - 通过进程号显示该进程打开的文件
- [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 /
复制代码 - 列出COMMAND列中包罗字符串" mysql",且文件描符的类型为mem,用户为root的文件信息
- [root@Rocky ~]# lsof -c mysql -a -d men -u root
复制代码 - 列出被进程号为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)
复制代码 - 列出被进程号为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)
- =======
复制代码 - 找出正等候毗连的端口
- [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)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |