Linux如何查看程序占用端口?

使用 netstat 命令(经典工具)

适用场景:快速查看所有活跃连接和监听端口。
命令示例:

sudo netstat -tulnp
  • 参数解析:
    -t:TCP协议
    -u:UDP协议
    -l:仅显示监听端口
    -n:以数字形式显示端口(不解析服务名)
    -p:显示进程名和PID
  • 输出示例:
    Proto Recv-Q Send-Q Local Address  Foreign Address  State    PID/Program name
    tcp        0      0 0.0.0.0:22     0.0.0.0:*        LISTEN   1234/sshd
    tcp6       0      0 :::80          :::*             LISTEN   5678/nginx

    关键列:
    Local Address → 0.0.0:22 表示监听所有IP的22端口
    PID/Program name → 进程ID和程序名(如 sshd)


使用 ss 命令(netstat 的现代替代)

优势:执行速度更快,语法更简洁。
命令示例:

sudo ss -tulnp
  • 参数与输出:与 netstat 类似,但格式更紧凑。
  • 过滤特定端口(如查看80端口):
    sudo ss -tulnp 'sport = :80'

使用 lsof 命令(查看文件与端口关联)

适用场景:精确查看指定程序或端口的使用情况。
常用操作:

  1. 查看所有监听端口:

    sudo lsof -i -P -n | grep LISTEN
    • -i:显示网络连接
    • -P:禁用端口服务名解析(显示数字端口)
    • -n:禁用IP地址解析(显示数字IP)
  2. 查看指定程序(如nginx)的端口:

    sudo lsof -i -P -n | grep nginx
  3. 查看指定端口(如3306)的进程:

    sudo lsof -i :3306

使用 fuser 命令(通过端口查进程)

适用场景:直接根据端口号定位进程。
命令示例:

sudo fuser 80/tcp
  • 输出:80/tcp: 5678 → 表示TCP 80端口被PID为5678的进程占用。

通过 /proc 文件系统(底层信息)

原理:Linux的进程信息存储在 /proc 目录中。
操作步骤:

  1. 先用 ss 或 lsof 获取端口对应的PID(如PID 5678)。
  2. 查看该进程打开的端口:
    ls -l /proc/5678/fd | grep socket:

⚠️ 常见问题与解决方案

  1. 权限不足:

    • 若命令无输出,需添加 sudo 提权(普通用户无法查看系统进程)。
  2. 命令未找到:

    • 安装缺失工具:
      # netstat/ss
      sudo apt install net-tools iproute2  # Debian/Ubuntu
      sudo yum install net-tools iproute   # CentOS/RHEL
      # lsof/fuser
      sudo apt install lsof psmisc         # Debian/Ubuntu
      sudo yum install lsof psmisc         # CentOS/RHEL
  3. 端口显示为 :::80 或 0.0.0:80:

    • 表示IPv6监听,0.0.0 表示IPv4监听(所有网卡)。

总结建议

  • 首选工具:日常使用 ss(高效)或 lsof(功能全面)。
  • 安全提示:
    • 关闭未授权的端口(通过防火墙或终止进程)。
    • 定期检查可疑连接(如 ESTABLISHED 状态的未知IP)。
  • 自动化监控:结合脚本(如 cron 定时运行 ss -tuln)记录端口使用情况。

引用说明:

  • 命令文档参考 Linux man 手册(如 man ss, man lsof)。
  • 网络协议规范依据 IETF RFC 标准(如 TCP/UDP 端口定义)。
  • 系统级实现参考 Linux 内核文档(/proc 文件系统)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6641.html

赞 (0)
酷番叔酷番叔
上一篇 2025年7月8日 07:19
下一篇 2025年7月8日 07:37

相关推荐

  • Linux中如何正确退出正在执行的ping命令?

    在Linux系统中,ping命令是常用的网络诊断工具,通过发送ICMP回显请求测试与目标主机的连通性,默认会持续发送请求直至手动终止,实际使用中,用户常需根据场景提前退出ping命令,本文将详细介绍多种退出方法及其适用场景,帮助用户灵活应对不同需求,常规终端直接退出:Ctrl+C与Ctrl+Z组合Ctrl+C……

    2025年8月27日
    30500
  • 关闭防火墙会怎样?

    在Linux系统中,防火墙是保护系统安全的关键组件,关闭防火墙可能使系统暴露于网络攻击中,仅建议在测试环境、隔离网络或明确知晓风险的情况下操作,以下分发行版和防火墙类型详细说明关闭方法:关闭前的准备备份防火墙规则(避免误操作无法恢复):sudo iptables-save > ~/iptables_bac……

    2025年7月24日
    29300
  • Linux中创建文件夹目录的具体步骤和命令是什么?

    在Linux操作系统中,建立文件夹目录(即创建目录)是日常管理和系统维护的基础操作,主要通过mkdir命令实现,mkdir是“make directory”的缩写,支持灵活的参数配置,能够满足单目录创建、多级嵌套目录创建、权限设置等需求,本文将详细介绍mkdir命令的使用方法、常用参数、高级技巧及常见问题解决……

    2025年9月24日
    34200
  • linux 如何去重复数据

    在Linux系统中,处理重复数据是日常运维和数据分析中的常见需求,无论是日志文件去重、数据清洗还是文件系统空间优化,都需要高效的去重方法,本文将详细介绍Linux环境下不同场景下的去重复数据方法,涵盖文本行去重、字段去重、文件内容去重等,并结合常用命令和工具进行说明,纯文本行去重(基础场景)对于纯文本文件,去除……

    2025年10月1日
    24200
  • linux如何打开网址

    Linux 中,可通过浏览器如 Firefox、Chrome 输入网址打开;

    2025年8月16日
    24000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信