麒麟OS中确认服务监听端口需综合使用ss、netstat、lsof、firewall-cmd和systemctl五种方法:ss高效查看进程与端口,netstat兼容旧环境,lsof精确定位占用进程,firewall-cmd验证防火墙放行状态,systemctl检查systemd服务绑定配置。

如果您在麒麟OS系统中需要确认某个服务是否正在监听特定端口,或排查网络连接异常,通常需验证该端口是否处于监听状态并识别对应进程。以下是查看服务监听端口的多种方法:
一、使用ss命令查看所有监听端口
ss(socket statistics)是现代Linux系统推荐的高性能工具,比netstat更快速、输出更简洁,能直接显示TCP/UDP监听端口及关联进程信息。
1、执行命令列出所有监听中的TCP和UDP端口,并显示进程名与PID:
sudo ss -tulnp
2、仅过滤TCP监听端口(排除UDP干扰):
sudo ss -tlnp
3、检查80端口是否被监听:
sudo ss -tlnp | grep ':80'
4、若提示Permission denied,说明当前用户无权读取进程信息,必须使用sudo权限运行。
二、使用netstat命令查看监听端口
netstat是传统网络统计工具,功能全面但部分麒麟OS版本默认未安装,适用于需兼容旧脚本或需详细连接状态的场景。
1、安装net-tools(如提示command not found):
sudo apt install net-tools # 麒麟桌面版(Debian系)
或
sudo yum install net-tools # 麒麟服务器版(CentOS系)
2、列出所有监听端口(含进程):
sudo netstat -tulnp
3、单独检查3306端口占用情况:
sudo netstat -tulnp | grep ':3306'
4、若输出中某行显示LISTEN且进程列为mysqld,则表明MySQL服务已启动并监听该端口。
三、使用lsof命令定位监听进程
lsof可精确列出打开的网络套接字文件,适合快速定位指定端口由哪个进程持有,尤其适用于调试冲突或未知监听行为。
1、安装lsof(如未预装):
sudo apt install lsof # 麒麟桌面版
或
sudo yum install lsof # 麒麟服务器版
2、查看所有监听TCP端口及其进程:
sudo lsof -i -P -n -s TCP:LISTEN
3、检查6379端口是否被redis-server占用:
sudo lsof -i :6379
4、仅输出PID和进程名(便于后续操作):
sudo lsof -t -i :8080
四、通过firewall-cmd验证端口是否对外放行
即使服务已在本地监听端口,若防火墙未放行,外部仍无法访问。firewall-cmd用于查询firewalld管理的端口策略,区分“监听”与“可达”两个层面。
1、确认firewalld服务是否运行:
sudo firewall-cmd --state
2、列出当前所有已放行的端口及协议:
sudo firewall-cmd --list-ports
3、检查80端口是否明确开放:
sudo firewall-cmd --query-port=80/tcp
4、若返回no,表示该端口虽可能被服务监听,但尚未通过防火墙对外暴露。
五、结合systemctl检查systemd托管服务的监听状态
对于由systemd统一管理的服务(如nginx、httpd、mysqld),其监听行为通常定义在服务单元文件中,可通过服务状态反推端口绑定情况。
1、检查nginx服务当前运行状态:
sudo systemctl is-active nginx
2、查看该服务的启动配置中是否包含监听指令:
sudo systemctl cat nginx.service | grep Listen
3、检索服务启动日志中关于端口绑定的关键信息:
sudo journalctl -u nginx.service | grep 'listening on'
4、若日志中出现类似listening on [::]:80,即可确认nginx已成功绑定IPv6和IPv4的80端口。

















