
lsof 命令基本介绍lsofList Open Files是 Linux 系统中用于显示当前系统打开文件的命令行工具。由于在 Unix/Linux 系统中一切皆文件包括普通文件、目录、套接字、管道、设备等因此lsof可以用来查看各种系统资源的使用情况是系统管理员进行故障排查和安全审计的重要工具。资料合集https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a语法lsof [OPTIONS] [names]常用选项基本显示选项-h, --help显示帮助信息-V, --version显示版本信息-a, --and逻辑与运算多个选项同时满足-O, --no-overlap避免选项重叠导致遗漏结果-P, --no-port-names显示端口号而非服务名-n, --no-ipx不解析 IP 地址为主机名-s, --search显示指定状态的文件输出控制选项-c, --proc name显示指定进程打开的文件-p, --pid pid显示指定 PID 打开的文件-u, --user user显示指定用户打开的文件-g, --pgid pgid显示指定进程组打开的文件D, d dir显示指定目录下打开的文件c, c n限制命令名显示宽度文件和网络选项-d, --desc desc按文件描述符过滤-i, --internet显示网络相关文件-U, --unix显示 UNIX 域套接字文件-t, --only只显示 PID常用组合选项lsof -i -a -p pid显示指定进程的网络连接lsof -iTCP -sTCP:ESTABLISHED显示已建立的 TCP 连接lsof -iUDP -sUDP显示 UDP 连接lsof -i:80显示占用端口 80 的进程lsof -u username显示指定用户打开的文件使用示例1. 显示所有打开的文件lsof输出示例COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 253,0 4096 2 / init 1 root rtd DIR 253,0 4096 2 / bash 123 user cwd DIR 253,0 4096 123456 /home/user bash 123 user txt REG 253,0 98765 234567 /bin/bash2. 显示占用特定端口的进程lsof-i:80lsof-i:443lsof-i:22输出示例COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1234 root 3u IPv4 456789 0t0 TCP *:http (LISTEN) nginx 1234 root 4u IPv4 456790 0t0 TCP *:https (LISTEN)3. 显示特定进程打开的文件lsof-p1234lsof-cnginxlsof-cssh4. 显示特定用户打开的文件lsof-uwww-datalsof-uroot5. 显示网络连接lsof-i# 显示所有网络连接lsof-iTCP# 显示 TCP 连接lsof-iUDP# 显示 UDP 连接lsof-i-sTCP:LISTEN# 显示监听中的 TCP 连接lsof-i-sTCP:ESTABLISHED# 显示已建立的 TCP 连接6. 显示目录下的打开文件lsofD /home# 显示 /home 下打开的文件递归lsofd /var/log# 显示 /var/log 下打开的文件不递归7. 显示文件描述符lsof-d0,1,2# 显示标准输入输出文件lsof-dtxt# 显示程序代码文件lsof-dmem# 显示内存映射文件8. 组合条件查询lsof-uwww-data-i# www-data 用户的网络连接lsof-p1234-a-i# PID 1234 的网络连接lsof-i-a-cnginx# nginx 进程的网络连接9. 显示 UNIX 域套接字lsof-Ulsof-U-uroot10. 只显示 PIDlsof-t-i:80# 返回占用端口 80 的进程 PIDlsof-t-cnginx# 返回 nginx 进程的 PID11. 禁止主机名和端口名解析lsof-i-n-P# 加速显示输出格式说明主要列说明列名说明COMMAND进程名称PID进程 IDUSER进程所属用户FD文件描述符TYPE文件类型DEVICE设备号SIZE/OFF文件大小或偏移量NODE文件节点号NAME文件路径或网络地址常见文件描述符FD说明cwd当前工作目录rtd根目录txt程序代码文件mem内存映射文件mmap内存映射设备0u标准输入u 表示打开模式1u标准输出2u标准错误常见文件类型TYPE说明REG普通文件DIR目录CHR字符设备BLK块设备FIFO管道SOCK套接字IPv4IPv4 套接字IPv6IPv6 套接字实用技巧排查端口占用问题# 找出占用端口 8080 的进程lsof-i:8080# 强制结束占用端口的进程kill-9$(lsof-t-i:8080)排查文件删除后空间未释放# 找出已删除但仍被占用的大文件lsofL1排查无法卸载文件系统# 找出占用文件系统的进程lsofD /mnt安全审计# 查看用户打开的网络连接lsof-uwww-data-i# 查看所有网络连接lsof-i-n-P相关命令fuser显示文件或套接字的使用者netstat显示网络连接和统计ss显示套接字统计信息lslocks显示系统锁信息ps显示进程信息strace跟踪系统调用和信号cat /proc/*/fd直接查看进程文件描述符注意事项权限要求lsof通常需要 root 权限才能查看所有进程的文件使用情况性能影响在大型系统上运行lsof可能需要较长时间输出过滤使用适当的过滤条件可以显著减少输出量定期更新lsof显示的是执行时刻的快照解析优化使用-n -P选项可以加快显示速度安装方法Debian/Ubuntuapt-get install lsofCentOS/RHELyum install lsof替代工具在某些情况下fuser和ss可以提供类似功能总结lsof是 Linux 系统中功能强大的文件和网络诊断工具。通过lsof系统管理员可以查看进程打开的文件、网络连接、文件描述符等信息是故障排查、性能分析和安全审计的必备工具。掌握lsof的使用对于理解系统资源和排查问题非常有帮助。