插件窝 干货文章 linux怎么查看程序占用哪个端口号

linux怎么查看程序占用哪个端口号

端口 程序名 sudo 查看 926    来源:    2025-04-17

在 Linux 系统中,可以通过以下几种方法查看程序占用的端口号:


方法 1:使用 netstat 命令

sudo netstat -tulnp | grep <程序名或端口号>

参数说明: - -t:显示 TCP 端口 - -u:显示 UDP 端口
- -l:仅显示监听状态的端口
- -n:以数字形式显示端口(不解析服务名称)
- -p:显示进程名和 PID

示例:

sudo netstat -tulnp | grep nginx  # 查看 nginx 占用的端口
sudo netstat -tulnp | grep 80     # 查看 80 端口被哪个程序占用

方法 2:使用 ss 命令(推荐,更高效)

sudo ss -tulnp | grep <程序名或端口号>

参数同 netstat,但 ss 是更现代的替代工具,速度更快。

示例:

sudo ss -tulnp | grep sshd

方法 3:使用 lsof 命令

sudo lsof -i :<端口号>   # 查看指定端口
sudo lsof -i | grep <程序名>  # 查看程序占用的所有端口

示例:

sudo lsof -i :22        # 查看 22 端口(SSH)的占用情况
sudo lsof -i | grep java  # 查看 Java 程序占用的端口

方法 4:通过进程 PID 查看

如果已知进程的 PID(例如 1234),可以直接查询:

sudo ls -l /proc/1234/exe  # 确认程序路径
sudo ss -p | grep 1234     # 通过 PID 查端口

常见问题

  1. 权限不足:部分命令需要 sudo 才能查看所有进程。
  2. 无结果:可能是程序未运行或未监听端口,检查程序状态(ps aux | grep <程序名>)。
  3. 端口未监听:确保程序已启动并配置正确(如 nginx 需检查配置文件)。

总结

  • 推荐工具:优先使用 ss(高效)或 lsof(详细信息)。
  • 快速定位:结合 grep 过滤程序名或端口号。
  • 权限:记得加 sudo 获取完整信息。