Linux 查看端口占用命令

Linux 查看端口占用命令

在 Linux 服务器运维中,经常需要查看某个端口是否被占用。例如网站打不开、程序启动失败、端口冲突、防火墙配置异常时,都需要先确认端口监听情况。

本文整理几种常用的 Linux 查看端口占用方法。

一、使用 ss 查看端口

ss 是现在 Linux 系统中比较推荐的网络查看工具,速度快,信息清晰。

查看所有监听端口:

ss -tunlp

参数说明:

-t:显示 TCP
-u:显示 UDP
-n:不解析域名和服务名,直接显示数字端口
-l:只显示监听状态
-p:显示进程信息

查看指定端口,例如 80:

ss -tunlp | grep :80

查看 443 端口:

ss -tunlp | grep :443

输出示例:

LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))

说明 80 端口正在被 nginx 占用。

二、使用 netstat 查看端口

部分老教程会使用 netstat

查看所有监听端口:

netstat -tunlp

如果提示没有 netstat,可以安装:

Ubuntu / Debian:

apt install net-tools -y

CentOS / Rocky Linux:

yum install net-tools -y

查看指定端口:

netstat -tunlp | grep :8080

三、使用 lsof 查看端口

lsof 可以查看某个端口被哪个进程占用。

查看 8080 端口:

lsof -i :8080

输出示例:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node     1234 root   20u  IPv4  12345      0t0  TCP *:8080 (LISTEN)

说明 8080 端口被 node 进程占用,进程 ID 是 1234

如果没有 lsof,可以安装:

apt install lsof -y

或:

yum install lsof -y

四、查看端口对应进程详情

拿到 PID 后,可以查看进程详情:

ps -fp 1234

也可以查看完整启动命令:

cat /proc/1234/cmdline

或者:

tr '\0' ' ' < /proc/1234/cmdline

五、查看端口是否对外监听

如果监听地址是:

0.0.0.0:8080

表示所有网卡都监听,外部可能可以访问。

如果是:

127.0.0.1:8080

表示只允许本机访问,外部无法直接访问。

如果是:

[::]:8080

表示 IPv6 监听,有时也可能同时支持 IPv4,具体要看系统配置。

六、测试远程端口是否开放

在本地电脑或另一台服务器上测试:

nc -vz 服务器IP 端口

例如:

nc -vz 1.2.3.4 443

如果显示 succeeded,说明端口可连接。

也可以使用 telnet:

telnet 1.2.3.4 443

七、端口被占用怎么办

如果程序启动失败提示端口被占用,可以先找到进程:

ss -tunlp | grep :8080

然后确认 PID,再决定是否停止。

停止服务推荐优先使用 systemctl,例如:

systemctl stop nginx

如果是普通进程,可以使用:

kill 1234

如果无法停止,再考虑:

kill -9 1234

注意:不要随便 kill 不认识的进程,可能影响正在运行的网站或服务。

八、常见端口说明

21:FTP
22:SSH
25:SMTP
53:DNS
80:HTTP
443:HTTPS
3306:MySQL
5432:PostgreSQL
6379:Redis
8080:常见 Web 应用
8888:常见面板端口

九、排查网站打不开的思路

如果网站打不开,可以按顺序检查:

1. 域名是否解析正确
2. 服务器是否能 ping 通
3. 80/443 端口是否监听
4. 防火墙是否放行端口
5. 云安全组是否放行端口
6. Nginx/Apache 是否正常运行
7. 网站程序是否报错

查看 Nginx 是否监听:

ss -tunlp | grep nginx

查看 Nginx 状态:

systemctl status nginx

总结

Linux 查看端口占用最常用的命令是:

ss -tunlp

查看指定端口:

ss -tunlp | grep :端口

如果要看具体进程,可以配合:

lsof -i :端口
ps -fp PID

掌握这些命令,可以快速判断服务是否启动、端口是否冲突,以及服务器是否正常对外提供服务。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容