在 Linux 系统中,可以通过以下几种方法查看程序占用的端口号:
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 端口被哪个程序占用
ss
命令(推荐,更高效)sudo ss -tulnp | grep <程序名或端口号>
参数同 netstat
,但 ss
是更现代的替代工具,速度更快。
示例:
sudo ss -tulnp | grep sshd
lsof
命令sudo lsof -i :<端口号> # 查看指定端口
sudo lsof -i | grep <程序名> # 查看程序占用的所有端口
示例:
sudo lsof -i :22 # 查看 22 端口(SSH)的占用情况
sudo lsof -i | grep java # 查看 Java 程序占用的端口
如果已知进程的 PID(例如 1234
),可以直接查询:
sudo ls -l /proc/1234/exe # 确认程序路径
sudo ss -p | grep 1234 # 通过 PID 查端口
sudo
才能查看所有进程。ps aux | grep <程序名>
)。nginx
需检查配置文件)。ss
(高效)或 lsof
(详细信息)。grep
过滤程序名或端口号。sudo
获取完整信息。