别让Linux网络基础拖后腿!这些 lsof 骚操作你真的了解吗?

lsof 是 Linux 系统管理中极为强大的工具,尤其在网络问题排查中堪称神器。

以下从基础到进阶的用法解析,帮你彻底掌握网络相关的骚操作:


一、基础必知:网络连接的本质

Linux 中一切皆文件,网络连接本质是进程打开的特殊文件。通过 lsof 可以查看进程与网络文件(如 sockets)的关联。


二、网络排查核心命令

1. 查看所有网络连接

sudo lsof -i
  • 关键字段COMMAND(进程名)、PIDUSERFD(文件描述符)、TYPEDEVICESIZE/OFFNODENAME(连接详情)

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)

2. 用户级网络监控

lsof -i -u root        # 查看root用户的网络连接
lsof -i -u ^root       # 排除root用户(非root用户连接)

3. 网络文件与进程映射

lsof /var/run/mysql/mysql.sock  # 查看谁在使用MySQL的Unix socket

4. 实时网络监控(动态刷新)

watch -n 1 "lsof -p <PID> -i"  # 每1秒刷新进程网络状态

四、性能优化技巧

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 :3000
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    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 等工具交叉验证,应对更复杂场景!

还是那句话:干中学,学中干

如果觉得不错的话,麻烦点个关注,收藏谢谢。

毕竟:

原文链接:,转发请注明来源!