您好,登录后才能下订单哦!
# Linux中怎么查看服务的端口号
## 前言
在Linux系统管理和网络运维中,了解服务所使用的端口号是至关重要的技能。无论是排查网络问题、配置防火墙规则,还是进行服务监控,掌握端口查看方法都能极大提高工作效率。本文将详细介绍Linux系统中查看服务端口号的多种方法,涵盖基础命令、高级技巧以及相关工具的使用。
---
## 一、端口与服务的基本概念
### 1.1 什么是端口
端口(Port)是网络通信中的逻辑概念,用于区分同一台主机上的不同网络服务。每个端口对应一个16位数字(0-65535),其中:
- 0-1023:知名端口(Well-known Ports),如HTTP(80)、HTTPS(443)
- 1024-49151:注册端口(Registered Ports)
- 49152-65535:动态/私有端口(Dynamic/Private Ports)
### 1.2 常见服务与端口对应关系
| 服务名称 | 端口号 | 传输协议 |
|------------|--------|----------|
| SSH | 22 | TCP |
| HTTP | 80 | TCP |
| HTTPS | 443 | TCP |
| MySQL | 3306 | TCP |
| Redis | 6379 | TCP |
| MongoDB | 27017 | TCP |
---
## 二、使用系统内置命令查看端口
### 2.1 netstat命令(传统工具)
```bash
# 查看所有监听端口
netstat -tulnp
# 参数说明:
# -t : TCP连接
# -u : UDP连接
# -l : 仅显示监听端口
# -n : 显示数字地址(不解析主机名)
# -p : 显示进程信息
示例输出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
tcp6 0 0 :::80 :::* LISTEN 5678/nginx
# 基本用法(类似netstat但更高效)
ss -tulnp
# 查看特定服务的端口
ss -tlnp | grep nginx
# 查看所有网络连接
lsof -i
# 查看特定端口
lsof -i :80
# 查看某进程使用的端口
lsof -p PID -i
grep -w 'http' /etc/services
输出示例:
http 80/tcp www www-http
不同服务的配置文件位置:
- Nginx: /etc/nginx/nginx.conf
或 /etc/nginx/sites-enabled/
- Apache: /etc/httpd/conf/httpd.conf
- MySQL: /etc/mysql/my.cnf
- SSH: /etc/ssh/sshd_config
示例查找SSH端口:
grep -i port /etc/ssh/sshd_config
# 扫描本地开放端口
nmap -sT -p- 127.0.0.1
# 扫描特定服务
nmap -sV -p 22,80,443 localhost
telnet localhost 22
# 端口监听测试
nc -zv localhost 1-1000 2>&1 | grep succeeded
systemctl list-sockets --all
systemctl cat sshd.service
iptables -L -n -v --line-numbers
firewall-cmd --list-all
ufw status verbose
docker ps --format "table {{.Names}}\t{{.Ports}}"
docker inspect --format='{{.NetworkSettings.Ports}}' 容器名
kubectl get svc
kubectl describe pod pod-name
# 查看系统日志中的端口相关记录
journalctl -u nginx | grep -i port
示例脚本:
#!/bin/bash
SERVICES=("sshd" "nginx" "mysql")
for service in "${SERVICES[@]}"; do
PORT=$(ss -tlnp | grep "$service" | awk '{print $4}' | cut -d':' -f2)
echo "$service is using port: ${PORT:-Not Found}"
done
现象:服务启动失败,提示”Address already in use” 解决方法:
# 查找占用端口的进程
ss -tlnp | grep ':80 '
# 然后选择停止冲突进程或修改服务配置
现象:外部无法访问服务 解决方法:
# 检查防火墙规则
iptables -L
# 临时开放端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
掌握Linux系统中查看服务端口号的方法,是每位系统管理员和开发人员的必备技能。本文介绍了从基础命令到高级技巧的十余种方法,建议读者在实际工作中根据具体场景选择合适的方式。随着容器化和云原生技术的发展,端口管理也出现了新的工具和方法,值得持续学习和探索。
知识扩展: - 学习
tcpdump
进行网络包分析 - 了解socat
等高级网络工具 - 掌握conntrack
等连接跟踪工具 “`
注:本文实际约2150字(中文字符统计),包含了: 1. 10个主要章节 2. 20+个实用命令示例 3. 多种场景下的解决方案 4. 表格、代码块等Markdown元素 5. 安全注意事项和实际案例
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。