本文详解CentOS系统下5种主流端口检测方法,包含netstat、lsof、ss等命令实战案例,并给出端口冲突解决方案。教你通过进程管理、防火墙配置实现精准端口监控,附带常见问题速查指南。
CentOS查看端口占用的3种核心方法
当部署新服务提示“Address already in use”时,快速定位端口占用是关键。通过SSH连接服务器执行以下命令组合:
- netstat -tunlp | grep 80 → 显示TCP/UDP协议下80端口进程
- lsof -i :8080 → 精准识别指定端口占用程序
- ss -sptn | grep ESTAB → 查看实时连接状态
案例:某用户使用
ss -ltn
发现3306端口被mysqld意外占用,及时释放后完成数据库迁移
端口占用进程如何强制终止
确认占用端口后,推荐分步处理流程:
- 通过
ps -ef | grep nginx
获取进程PID - 用
kill -9 28530
结束异常进程 - 执行
systemctl restart httpd
重启服务
注意:生产环境建议先使用
kill -15
发送正常终止信号
防火墙规则导致端口不可用怎么办
若确定进程未占用端口却无法访问,需检查防火墙配置:
firewall-cmd --list-ports
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
某电商平台曾因未开放Redis端口导致订单系统异常,添加规则后恢复
端口监控自动化实现方案
长期运维建议配置监控脚本:
!/bin/bash
while true; do
netstat -an | grep ':80 ' >> port_monitor.log
sleep 300
done
配合crontab定时任务,可实现:
- 异常连接实时告警
- 历史访问趋势分析
- 突发流量自动扩容
运维必知的高频问题速查
- Q:为什么netstat显示TIME_WAIT状态过多?
- A:TCP连接未完全关闭,调整
sysctl.conf
中tcp_tw_reuse参数 - Q:如何查看所有监听端口?
- A:执行
netstat -lntup
或ss -lntu
- Q:非root用户为何无法查看进程?
- A:使用
sudo lsof -i
或加入sudoers组