答案:使用netstat、ss或lsof命令可查看Linux服务监听的端口。ss -tulpn是首选,因性能优于netstat;lsof -i :端口号可查特定端口占用;需排查防火墙、绑定地址错误等问题确保服务可访问。

在Linux系统里,想知道某个服务监听了哪些端口,或者哪些端口正在被使用,最直接的办法就是利用
netstat
ss
lsof
要查看Linux系统服务监听的端口,我们可以主要依赖三个命令:
netstat
ss
lsof
使用 netstat
netstat
netstat -tulpn
-t
-u
-l
-p
-n
使用 ss
ss
netstat
/proc
ss -tulpn
netstat
ss
netstat
使用 lsof
lsof
lsof -i -P -n
-i
-p
-n
lsof -i :8080
lsof

在日常维护中,我们经常需要定位某个特定服务或进程正在使用哪个端口,或者反过来,某个端口被哪个进程占用了。这其实是上述命令的进阶用法。
通过进程名查找: 假设你想知道
nginx
nginx
netstat
ss
ps aux | grep nginx
nginx
12345
ss -tulpn | grep 12345
lsof -i -P -n | grep 12345
nginx
grep
ss -tulpn | grep nginx
通过端口号查找: 如果你发现某个端口被占用了,想知道是谁占用的,比如端口是
8080
ss -tulpn | grep :8080
netstat -tulpn | grep :8080
lsof -i :8080
8080
lsof -i :<port>

这是一个非常常见且让人头疼的问题。服务看起来启动成功了,日志也正常,但就是从外部访问不到。这背后往往不是一个单一原因,需要我们逐一排查。
防火墙规则: 这是最常见的原因之一。Linux系统通常都开启了防火墙(如
firewalld
ufw
iptables
firewalld
sudo firewall-cmd --state
sudo firewall-cmd --list-all
ufw
sudo ufw status
iptables
sudo iptables -L -n
firewalld
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
ufw
sudo ufw allow 8080/tcp
服务绑定地址错误: 服务可能没有绑定到正确的网络接口上。如果服务只绑定到
127.0.0.1
0.0.0.0
ss -tulpn
netstat -tulpn
Local Address
127.0.0.1:8080
0.0.0.0
服务配置错误: 有时候,服务启动时可能加载了错误的配置文件,或者配置文件中的监听端口与你预期的不符。例如,你以为服务在
8080
8000
nginx.conf
apache2.conf
application.properties
SELinux/AppArmor 限制: 在一些安全性要求较高的系统上,SELinux 或 AppArmor 可能会阻止服务在特定端口上监听,即使防火墙允许。虽然这种情况相对少见,但如果以上方法都无效,可以考虑检查这些安全模块的日志。 对于SELinux,你可以查看
sudo ausearch -c <service_name> --raw | audit2allow -l

netstat
ss
netstat
ss
netstat
netstat
/proc/net/tcp
/proc/net/udp
/proc
netstat
ss
ss
iproute2
netstat
ss
/proc
ss
netstat
我应该用哪个?
我的建议是:在大多数情况下,优先使用 ss
ss
ss
netstat
-tulpn
ss
举个例子,如果我只是想快速看看哪个端口被占用了,我可能随手敲
ss -tulpn
ss -i
netstat
ss
以上就是Linux如何查看服务监听的端口的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号