# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。