插件窝 干货文章 Linux高手必备工具:掌握 LSOF 命令实时监控端口

Linux高手必备工具:掌握 LSOF 命令实时监控端口

端口 lsof 文件 查看 301    来源:    2025-05-13

Linux高手必备工具:掌握lsof命令实时监控端口

什么是lsof命令

lsof(List Open Files)是一个功能强大的Linux/Unix命令行工具,用于列出系统中所有被打开的文件及相关进程信息。在Linux系统中,"一切皆文件",因此lsof实际上可以显示几乎所有类型的I/O资源,包括常规文件、目录、块设备、字符设备、网络套接字等。

为什么需要监控端口

  1. 安全审计:检测未经授权的端口访问
  2. 故障排查:解决端口冲突或服务无法启动问题
  3. 性能优化:分析网络连接状况
  4. 资源管理:了解系统资源使用情况

lsof监控端口的基本用法

1. 查看所有网络连接

lsof -i

2. 查看特定端口的使用情况

lsof -i :端口号

例如查看80端口:

lsof -i :80

3. 查看TCP/UDP连接

lsof -i TCP      # 查看所有TCP连接
lsof -i UDP      # 查看所有UDP连接
lsof -i :22      # 查看SSH端口(22)连接

4. 查看特定进程打开的文件和端口

lsof -p 进程ID

高级用法

1. 查看特定用户打开的文件和端口

lsof -u 用户名

2. 查看特定程序打开的文件和端口

lsof -c 程序名

例如查看nginx打开的文件:

lsof -c nginx

3. 组合查询

lsof -i TCP:80 -u root  # 查看root用户的TCP 80端口连接

4. 实时监控端口变化

watch -n 1 "lsof -i :端口号"

这会每秒刷新一次指定端口的连接状态。

输出结果解析

lsof的输出通常包含以下列:

COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  • COMMAND:使用文件的命令名称
  • PID:进程ID
  • USER:运行进程的用户
  • FD:文件描述符(cwd=当前工作目录,txt=程序文本,mem=内存映射文件等)
  • TYPE:文件类型(REG=常规文件,DIR=目录,CHR=字符设备等)
  • DEVICE:设备号
  • SIZE/OFF:文件大小或偏移量
  • NODE:文件节点号
  • NAME:文件名或挂载点

实用案例

案例1:找出哪个进程占用了80端口

sudo lsof -i :80

案例2:查看所有HTTP连接

lsof -i TCP:80,443

案例3:查看某个用户的所有网络活动

lsof -i -u username

案例4:找出所有监听端口

lsof -i -sTCP:LISTEN

案例5:查看被删除但仍被进程占用的文件

lsof | grep deleted

注意事项

  1. 大多数情况下需要root权限才能查看所有进程信息
  2. lsof可能会产生大量输出,建议结合grep等工具过滤
  3. 在生产环境中谨慎使用,可能会影响性能
  4. 不同Linux发行版可能有细微差异

替代工具

虽然lsof功能强大,但还有其他工具可以辅助端口监控:

  1. netstatnetstat -tulnp
  2. ssss -tulnp(比netstat更高效)
  3. nmapnmap -sT -O localhost(端口扫描)

掌握lsof命令将使你在Linux系统管理和故障排查中如虎添翼,特别是在处理复杂的网络和文件系统问题时。