lsof 是 Linux 系统管理中极为强大的工具,尤其在网络问题排查中堪称神器。
以下从基础到进阶的用法解析,帮你彻底掌握网络相关的骚操作:

继续淦 肝到底
一、基础必知:网络连接的本质Linux 中一切皆文件,网络连接本质是进程打开的特殊文件。通过 lsof 可以查看进程与网络文件(如 sockets)的关联。
二、网络排查核心命令1. 查看所有网络连接sudo lsof -i关键字段:COMMAND(进程名)、PID、USER、FD(文件描述符)、TYPE、DEVICE、SIZE/OFF、NODE、NAME(连接详情)2. 精准过滤技巧按协议过滤(TCP/UDP):lsof -i TCP # 只看TCP连接lsof -i UDP:53 # 查看使用UDP 53端口的连接(DNS常用)按端口精准定位:lsof -i :8080 # 查看8080端口被谁占用lsof -i :ssh # 查看SSH服务端口(默认22)按IP/域名追踪:lsof -i @192.168.1.5 # 查看与特定IP的连接lsof -i @google.com:443 # 追踪与Google 443端口的连接3. 查看监听端口(LISTEN状态)sudo lsof -i -s TCP:LISTEN# 等效命令sudo lsof -i | grep LISTEN三、高阶骚操作1. 进程级网络分析查看指定进程的所有网络活动:lsof -p <PID> -a -i # -a 表示逻辑与,组合查询按进程名过滤(如 nginx):lsof -i -c nginx # 精确匹配进程名lsof -i -c /^nginx/ # 正则匹配(如 nginx-worker)
lsof 命令举例
2. 用户级网络监控lsof -i -u root # 查看root用户的网络连接lsof -i -u ^root # 排除root用户(非root用户连接)3. 网络文件与进程映射lsof /var/run/mysql/mysql.sock # 查看谁在使用MySQL的Unix socket4. 实时网络监控(动态刷新)watch -n 1 "lsof -p <PID> -i" # 每1秒刷新进程网络状态
lsof 更多技巧
四、性能优化技巧1. 禁用反向解析加速输出lsof -n -P -i # -n 禁用IP解析为主机名,-P 禁用端口解析为服务名2. 统计TCP连接数(按状态)lsof -i TCP | awk '{print $8}' | sort | uniq -c# 输出示例: # 10 ESTABLISHED# 2 LISTEN五、实战场景1. 端口占用冲突$ sudo lsof -i :3000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnode 1234 john 22u IPv6 0xabcd... TCP *:3000 (LISTEN)立刻定位到 PID 1234 的 node 进程占用了 3000 端口。
2. 检测异常外连lsof -i | grep 'ESTABLISHED' | grep 'xyz.com'发现进程与 xyz.com 的未授权连接,可能存在恶意软件。
六、总结:常用命令速查表场景命令
查看所有网络连接 sudo lsof -i按端口过滤 lsof -i :<port>按协议和状态过滤 lsof -i TCP:<状态>查看进程网络活动 lsof -p <PID> -a -i禁用解析加速 lsof -nP -i统计TCP状态 lsof -i TCP希望大家掌握这些技巧,这样你们的 Linux 网络问题排查效率将大幅提升。
同时建议结合 netstat/ss 等工具交叉验证,应对更复杂场景!
还是那句话:干中学,学中干
如果觉得不错的话,麻烦点个关注,收藏谢谢。
毕竟:

我太想进步了