






















AI 概述
lsof 是 Linux 核心运维工具,可查看进程打开的文件、设备、网络连接等信息,支持多种文件类型查询。本文介绍其基础概念、常用操作参数,结合实操案例,演示按进程、用户、端口、文件描述符等多维度查询方法,覆盖文件占用、端口监听、网络连接排查等场景,可帮助运维人员快速排查系统故障、分析资源状态,是 Linux 运维排查的实用工具。
目录
文章目录隐藏

lsof 是 Linux 系统中核心的文件与连接排查工具,可列出系统进程已打开的各类文件、设备及网络连接信息。本文详细介绍 lsof 的定义、支持的文件类型、常用命令参数,并结合大量实操案例,演示进程、用户、端口、文件描述符等多维度查询用法,是服务器运维、故障排查与资源分析的实用参考。
lsof(list open files)是一个查看当前系统文件的工具。Linux 系统中的所有事物都以文件的形式存在,包括常规数据、网络连接和硬件等。lsof 工具可以列出当前系统上由进程打开的所有文件和网络连接,以及这些文件和网络连接的详细信息,如文件描述符、进程 ID、用户、文件类型、文件名、网络连接等。这些信息对于排查文件访问和网络连接问题非常有用,也可以帮助诊断性能问题和释放资源。
lsof 打开的文件可以是:
| 文件类型 | 表示方式 |
|---|---|
| 普通文件 | REG |
| 目录 | DIR |
| 网络文件系统的文件 | NFS |
| 字符设备 | CHR |
| 块设备 | BLK |
| 函数库 | LIB |
| 套接字 | SOCK |
| 管道 | FIFO |
| 命名管道 | FIFO |
| 符号链接 | LNK |
| 网络 socket | INET |
| Unix 域名 socket | unix |
lsof 命令的基本格式为:
lsof [options]
其中,options 为 lsof 的不同参数,用于指定要显示的信息、过滤结果等。
以下是一些常用的 lsof 参数:
| 参数 | 描述 |
|---|---|
| -c | 仅显示匹配进程名的结果 |
| -p | 仅显示匹配进程 ID 的结果 |
| -u | 仅显示匹配用户名的结果 |
| -g | 仅显示匹配用户组的结果 |
| -i | 仅显示匹配网络端口的结果 |
| -a | 显示所有匹配条件的结果 |
| -t | 仅显示进程 ID |
| -F | 以指定格式输出结果 |
| -h | 不显示表头 |
| -n | 不解析主机名 |
| -P | 不解析端口号 |
| -s | 仅显示匹配协议的结果 |
| -V | 显示 lsof 版本信息 |
以上只是一部分常用的 lsof 参数,还有很多其他的参数可以自行查阅 lsof 的帮助文档。
在不加任何参数的情况下,lsof 会列出所有打开的文件和进程的详细信息。这可能会产生大量的输出,包括很多不必要的信息,因此建议使用其他参数来过滤和限制输出。如果需要列出所有打开的文件和进程的信息,可以使用以下命令:
[root@muyang ~]# lsof | more COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 253,3 238 64 / systemd 1 root rtd DIR 253,3 238 64 / systemd 1 root txt REG 253,3 1628608 67791946 /usr/lib/systemd/systemd systemd 1 root mem REG 253,3 20064 33717139 /usr/lib64/libuuid.so.1.3.0 systemd 1 root mem REG 253,3 265576 34213169 /usr/lib64/libblkid.so.1.1.0 systemd 1 root mem REG 253,3 90248 33717133 /usr/lib64/libz.so.1.2.7 systemd 1 root mem REG 253,3 157424 33717155 /usr/lib64/liblzma.so.5.2.2 systemd 1 root mem REG 253,3 23968 33717159 /usr/lib64/libcap-ng.so.0.0.0 systemd 1 root mem REG 253,3 19896 33717355 /usr/lib64/libattr.so.1.1.0 systemd 1 root mem REG 253,3 19248 33656645 /usr/lib64/libdl-2.17.so systemd 1 root mem REG 253,3 402384 33717119 /usr/lib64/libpcre.so.1.2.0 systemd 1 root mem REG 253,3 2156240 33639071 /usr/lib64/libc-2.17.so systemd 1 root mem REG 253,3 142144 33656665 /usr/lib64/libpthread-2.17.so systemd 1 root mem REG 253,3 88776 33554509 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 systemd 1 root mem REG 253,3 43712 33656669 /usr/lib64/librt-2.17.so systemd 1 root mem REG 253,3 277792 34213190 /usr/lib64/libmount.so.1.1.0 systemd 1 root mem REG 253,3 91800 33717318 /usr/lib64/libkmod.so.2.2.10 systemd 1 root mem REG 253,3 127184 33717162 /usr/lib64/libaudit.so.1.0.0 systemd 1 root mem REG 253,3 61680 34354248 /usr/lib64/libpam.so.0.83.1 systemd 1 root mem REG 253,3 20048 33717359 /usr/lib64/libcap.so.2.22 systemd 1 root mem REG 253,3 155744 33717131 /usr/lib64/libselinux.so.1 systemd 1 root mem REG 253,3 163312 33639064 /usr/lib64/ld-2.17.so systemd 1 root mem REG 253,3 1416154 68900363 /etc/selinux/targeted/contexts/files/file_contexts.bin systemd 1 root mem REG 253,3 296 68010597 /etc/selinux/targeted/contexts/files/file_contexts.local.bin systemd 1 root mem REG 253,3 45577 68900365 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin systemd 1 root 0u CHR 1,3 0t0 1028 /dev/null systemd 1 root 1u CHR 1,3 0t0 1028 /dev/null systemd 1 root 2u CHR 1,3 0t0 1028 /dev/null systemd 1 root 3u a_inode 0,10 0 6415 [timerfd] systemd 1 root 4u a_inode 0,10 0 6415 [eventpoll] systemd 1 root 5u a_inode 0,10 0 6415 [signalfd] systemd 1 root 6r DIR 0,21 0 9228 /sys/fs/cgroup/systemd systemd 1 root 7u a_inode 0,10 0 6415 [timerfd] systemd 1 root 8u netlink 0t0 10996 KOBJECT_UEVENT systemd 1 root 9r REG 0,3 0 9460 /proc/1/mountinfo systemd 1 root 10r a_inode 0,10 0 6415 inotify systemd 1 root 11r REG 0,3 0 4026532019 /proc/swaps systemd 1 root 12u unix 0xffff8c2434cef2c0 0t0 10129 /run/systemd/private ……
lsof 输出各列信息的意义如下:
[root@ctyun-mymobile ~]# lsof -c mysqld COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld_sa 1229 root cwd DIR 202,2 4096 923072 /www/server/mysql mysqld_sa 1229 root rtd DIR 202,2 4096 2 / mysqld_sa 1229 root txt REG 202,2 964536 1705859 /usr/bin/bash mysqld_sa 1229 root mem REG 202,2 163312 1707642 /usr/lib64/ld-2.17.so mysqld_sa 1229 root mem REG 202,2 26970 1708218 /usr/lib64/gconv/gconv-modules.cache mysqld_sa 1229 root mem REG 202,2 174576 1708269 /usr/lib64/libtinfo.so.5.9 mysqld_sa 1229 root mem REG 202,2 19248 1715559 /usr/lib64/libdl-2.17.so mysqld_sa 1229 root mem REG 202,2 2156592 1707902 /usr/lib64/libc-2.17.so mysqld_sa 1229 root mem REG 202,2 106176928 1715553 /usr/lib/locale/locale-archive mysqld_sa 1229 root mem REG 202,2 61560 1715567 /usr/lib64/libnss_files-2.17.so mysqld_sa 1229 root 0r CHR 1,3 0t0 17 /dev/null mysqld_sa 1229 root 1w CHR 1,3 0t0 17 /dev/null mysqld_sa 1229 root 2u unix 0xffff93695bbc5400 0t0 21536 socket mysqld_sa 1229 root 255r REG 202,2 27868 923102 /www/server/mysql/bin/mysqld_safe mysqld 2122 mysql cwd DIR 202,2 4096 938320 /www/server/data ……
-c 选项将会列出所有以 mysql 这个进程开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符。
[root@muyang ~]# lsof /bin/bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ksmtuned 697 root txt REG 253,3 964536 27829 /usr/bin/bash bash 6198 root txt REG 253,3 964536 27829 /usr/bin/bash bash 7743 root txt REG 253,3 964536 27829 /usr/bin/bash
[root@muyang ~]# lsof -u moonrong COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 8404 moonrong cwd DIR 253,5 4096 67 /home/moonrong bash 8404 moonrong rtd DIR 253,3 238 64 / bash 8404 moonrong txt REG 253,3 964536 27829 /usr/bin/bash bash 8404 moonrong mem REG 253,3 106172832 27824 /usr/lib/locale/locale-archive bash 8404 moonrong mem REG 253,3 61560 33656657 /usr/lib64/libnss_files-2.17.so bash 8404 moonrong mem REG 253,3 2156240 33639071 /usr/lib64/libc-2.17.so bash 8404 moonrong mem REG 253,3 19248 33656645 /usr/lib64/libdl-2.17.so bash 8404 moonrong mem REG 253,3 174576 33717102 /usr/lib64/libtinfo.so.5.9 bash 8404 moonrong mem REG 253,3 163312 33639064 /usr/lib64/ld-2.17.so bash 8404 moonrong mem REG 253,3 123267 33717113 /usr/share/locale/zh_CN/LC_MESSAGES/bash.mo bash 8404 moonrong mem REG 253,3 26970 67221303 /usr/lib64/gconv/gconv-modules.cache bash 8404 moonrong 0u CHR 136,0 0t0 3 /dev/pts/0 bash 8404 moonrong 1u CHR 136,0 0t0 3 /dev/pts/0 bash 8404 moonrong 2u CHR 136,0 0t0 3 /dev/pts/0 bash 8404 moonrong 255u CHR 136,0 0t0 3 /dev/pts/0
[root@ctyun-mymobile ~]# lsof -p 2122 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 2122 mysql cwd DIR 202,2 4096 938320 /www/server/data mysqld 2122 mysql rtd DIR 202,2 4096 2 / mysqld 2122 mysql txt REG 202,2 27889560 923100 /www/server/mysql/bin/mysqld mysqld 2122 mysql mem REG 202,2 163312 1707642 /usr/lib64/ld-2.17.so mysqld 2122 mysql DEL REG 0,11 22365 /[aio] mysqld 2122 mysql DEL REG 0,11 22366 /[aio] mysqld 2122 mysql DEL REG 0,11 22367 /[aio] mysqld 2122 mysql DEL REG 0,11 22368 /[aio] mysqld 2122 mysql DEL REG 0,11 22372 /[aio] mysqld 2122 mysql DEL REG 0,11 22369 /[aio] mysqld 2122 mysql DEL REG 0,11 22370 /[aio] mysqld 2122 mysql DEL REG 0,11 22371 /[aio] mysqld 2122 mysql mem REG 202,2 142144 1707928 /usr/lib64/libpthread-2.17.so mysqld 2122 mysql mem REG 202,2 6264 1729167 /usr/lib64/libaio.so.1.0.1 mysqld 2122 mysql mem REG 202,2 40600 1707906 /usr/lib64/libcrypt-2.17.so ……
[root@muyang ~]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rpcbind 603 rpc 6u IPv4 17061 0t0 UDP *:sunrpc rpcbind 603 rpc 7u IPv4 17062 0t0 UDP *:acmaint_transd rpcbind 603 rpc 8u IPv4 17063 0t0 TCP *:sunrpc (LISTEN) rpcbind 603 rpc 9u IPv6 17064 0t0 UDP *:sunrpc rpcbind 603 rpc 10u IPv6 17065 0t0 UDP *:acmaint_transd rpcbind 603 rpc 11u IPv6 17066 0t0 TCP *:sunrpc (LISTEN) chronyd 632 chrony 5u IPv4 18059 0t0 UDP localhost:323 chronyd 632 chrony 6u IPv6 18060 0t0 UDP localhost:323 avahi-dae 664 avahi 12u IPv4 16062 0t0 UDP *:mdns avahi-dae 664 avahi 13u IPv4 16063 0t0 UDP *:55498 cupsd 1063 root 11u IPv6 21159 0t0 TCP localhost:ipp (LISTEN) cupsd 1063 root 12u IPv4 21160 0t0 TCP localhost:ipp (LISTEN) sshd 1064 root 3u IPv4 21145 0t0 TCP *:ssh (LISTEN) sshd 1064 root 4u IPv6 21154 0t0 TCP *:ssh (LISTEN) dnsmasq 1495 nobody 3u IPv4 24889 0t0 UDP *:bootps dnsmasq 1495 nobody 5u IPv4 24892 0t0 UDP muyang:domain dnsmasq 1495 nobody 6u IPv4 24893 0t0 TCP muyang:domain (LISTEN) master 1508 root 13u IPv4 24918 0t0 TCP localhost:smtp (LISTEN) master 1508 root 14u IPv6 24919 0t0 TCP localhost:smtp (LISTEN) sshd 6170 root 3u IPv4 2573749 0t0 TCP muyang:ssh->129.184.157.101:onbase-dds (ESTABLISHED) sshd 6170 root 8u IPv6 2573792 0t0 TCP localhost:x11-ssh-offset (LISTEN) sshd 6170 root 9u IPv4 2573793 0t0 TCP localhost:x11-ssh-offset (LISTEN) sshd 7735 root 3u IPv4 2586301 0t0 TCP muyang:ssh->129.184.157.101:gttaua (ESTABLISHED) sshd 7735 root 8u IPv6 2586334 0t0 TCP localhost:6011 (LISTEN) sshd 7735 root 9u IPv4 2586335 0t0 TCP localhost:6011 (LISTEN)
[root@muyang ~]# lsof -i tcp COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rpcbind 603 rpc 8u IPv4 17063 0t0 TCP *:sunrpc (LISTEN) rpcbind 603 rpc 11u IPv6 17066 0t0 TCP *:sunrpc (LISTEN) cupsd 1063 root 11u IPv6 21159 0t0 TCP localhost:ipp (LISTEN) cupsd 1063 root 12u IPv4 21160 0t0 TCP localhost:ipp (LISTEN) sshd 1064 root 3u IPv4 21145 0t0 TCP *:ssh (LISTEN) sshd 1064 root 4u IPv6 21154 0t0 TCP *:ssh (LISTEN) dnsmasq 1495 nobody 6u IPv4 24893 0t0 TCP muyang:domain (LISTEN) master 1508 root 13u IPv4 24918 0t0 TCP localhost:smtp (LISTEN) master 1508 root 14u IPv6 24919 0t0 TCP localhost:smtp (LISTEN) sshd 6170 root 3u IPv4 2573749 0t0 TCP muyang:ssh->129.184.157.101:onbase-dds (ESTABLISHED) sshd 6170 root 8u IPv6 2573792 0t0 TCP localhost:x11-ssh-offset (LISTEN) sshd 6170 root 9u IPv4 2573793 0t0 TCP localhost:x11-ssh-offset (LISTEN) sshd 7735 root 3u IPv4 2586301 0t0 TCP muyang:ssh->129.184.157.101:gtaua (ESTABLISHED) sshd 7735 root 8u IPv6 2586334 0t0 TCP localhost:6011 (LISTEN) sshd 7735 root 9u IPv4 2586335 0t0 TCP localhost:6011 (LISTEN)
[root@muyang ~]# lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1064 root 3u IPv4 21145 0t0 TCP *:ssh (LISTEN) sshd 1064 root 4u IPv6 21154 0t0 TCP *:ssh (LISTEN) sshd 6170 root 3u IPv4 2573749 0t0 TCP muyang:ssh->129.184.157.101:onbase-dds (ESTABLISHED) sshd 7735 root 3u IPv4 2586301 0t0 TCP muyang:ssh->129.184.157.101:gtaua (ESTABLISHED)
[root@muyang ~]# lsof -a -u root -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME cupsd 1063 root 11u IPv6 21159 0t0 TCP localhost:ipp (LISTEN) cupsd 1063 root 12u IPv4 21160 0t0 TCP localhost:ipp (LISTEN) sshd 1064 root 3u IPv4 21145 0t0 TCP *:ssh (LISTEN) sshd 1064 root 4u IPv6 21154 0t0 TCP *:ssh (LISTEN) master 1508 root 13u IPv4 24918 0t0 TCP localhost:smtp (LISTEN) master 1508 root 14u IPv6 24919 0t0 TCP localhost:smtp (LISTEN) sshd 6170 root 3u IPv4 2573749 0t0 TCP muyang:ssh->129.184.157.101:onbase-dds (ESTABLISHED) sshd 6170 root 8u IPv6 2573792 0t0 TCP localhost:x11-ssh-offset (LISTEN) sshd 6170 root 9u IPv4 2573793 0t0 TCP localhost:x11-ssh-offset (LISTEN) sshd 7735 root 3u IPv4 2586301 0t0 TCP muyang:ssh->129.184.157.101:gtaua (ESTABLISHED) sshd 7735 root 8u IPv6 2586334 0t0 TCP localhost:6011 (LISTEN) sshd 7735 root 9u IPv4 2586335 0t0 TCP localhost:6011 (LISTEN)
要列出进程 ID 为 1234 的进程打开的文件描述符为 3 的文件信息,可以使用以下命令:
[root@muyang ~]# lsof -p 1234 -d 3 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 3u a_inode 0,10 0 6415 [timerfd] systemd-j 384 root 3u unix 0xffff8c2434ce9100 0t0 9487 /run/systemd/journal/stdout lvmetad 402 root 3u unix 0xffff8c2434cef700 0t0 13448 /run/lvm/lvmetad.socket systemd-u 421 root 3u unix 0xffff8c2434cefb40 0t0 13478 /run/udev/control auditd 570 root 3u netlink 0t0 14286 AUDIT audispd 572 root 3u unix 0xffff8c2434ceaa80 0t0 14288 socket rtkit-dae 601 rtkit 3u sock 0,7 0t0 17124 protocol: UNIX udisksd 602 root 3u unix 0xffff8c2335d96e80 0t0 17223 socket rpcbind 603 rpc 3u unix 0xffff8c24396561c0 0t0 15767 /var/run/rpcbind.sock ……
[root@muyang local]# lsof -p 1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 253,3 238 64 / systemd 1 root rtd DIR 253,3 238 64 / …… systemd 1 root 1u CHR 1,3 0t0 1028 /dev/null systemd 1 root 2u CHR 1,3 0t0 1028 /dev/null systemd 1 root 3u a_inode 0,10 0 6415 [timerfd] systemd 1 root 4u a_inode 0,10 0 6415 [eventpoll] systemd 1 root 5u a_inode 0,10 0 6415 [signalfd] systemd 1 root 6r DIR 0,21 0 9228 /sys/fs/cgroup/systemd systemd 1 root 7u a_inode 0,10 0 6415 [timerfd] systemd 1 root 8u netlink 0t0 10996 KOBJECT_UEVENT systemd 1 root 9r REG 0,3 0 9460 /proc/1/mountinfo systemd 1 root 10r a_inode 0,10 0 6415 inotify systemd 1 root 11r REG 0,3 0 4026532019 /proc/swaps systemd 1 root 12u unix 0xffff8c2434cef2c0 0t0 10129 /run/systemd/private systemd 1 root 13u unix 0xffff8c243783c400 0t0 27380 /run/systemd/journal/stdout
lsof 功能覆盖文件检索、进程排查、网络连接监测等核心运维场景,参数简洁、查询精准,可高效定位端口占用、文件占用、网络连接异常等问题。熟练掌握各类实操命令,能够帮助运维人员快速排查系统故障、分析进程资源状态,是 Linux 日常运维、性能调优与问题诊断的必备工具。
以上关于Linux lsof 命令详解:进程与文件监控实战的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Linux lsof 命令详解:进程与文件监控实战
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。