Linux查看服务器开放端口,netstat和ss命令使用教程
排查网站问题时,第一步经常是"看看端口到底开没开、哪个进程在监听"。Linux 下最常用的两个命令是 netstat 和 ss,下面整理最实用的用法。
一、netstat 命令(老系统常用)
1. 查看所有监听端口
netstat -tlnp
参数说明:
-t:TCP 端口-l:监听状态的端口-n:数字形式显示(不解析域名)-p:显示进程名和 PID
输出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 5678/sshd
2. 查看某个端口是否被占用
netstat -tlnp | grep 80
如果有输出说明 80 端口正在被占用,后面会显示是什么进程。
3. 查看所有 UDP 端口
netstat -ulnp
二、ss 命令(新系统推荐,更快)
ss 是 netstat 的替代品,在服务器连接数很多时速度快很多。
1. 查看所有监听端口
ss -tlnp
用法和 netstat 几乎一样,参数相同。
2. 查看某个端口
ss -tlnp | grep 443
3. 查看所有已建立的连接
ss -tn state established
三、其他常用排查命令
1. 直接看某个端口的进程
lsof -i:80
这个最直观,直接告诉你 80 端口被哪个 PID 占用了。
2. 查看某个进程监听了哪些端口
lsof -i | grep nginx
四、常见场景
场景1:网站打不开,怀疑端口没开
netstat -tlnp | grep 80
没有输出说明 Nginx 没启动,或者端口配置错了。
场景2:端口被占用,想换端口
lsof -i:3306
kill -9 12345 # 杀掉占用进程
场景3:服务器卡,想看有多少连接
ss -tn state established | wc -l
五、netstat 找不到怎么办?
CentOS 7 最小化安装可能没有 netstat,安装一下:
yum install net-tools -y
或者直接用 ss 命令,系统默认自带。
遇到服务器、Nginx、MySQL 报错,可以加微信远程协助排查问题。