现代Linux系统更倾向于使用ss命令,因其通过netlink直接与内核通信,性能更高、信息更全、支持精细过滤,尤其在处理大量连接时远优于依赖解析/proc文件的netstat。

在Linux系统中,要查看当前系统开放或正在使用的端口,最常用的两个命令是
ss
netstat
netstat
ss
要查看Linux中的端口,我们可以利用
ss
netstat
使用 ss
ss
socket statistics
netstat
查看所有监听的TCP和UDP端口(数字格式):
ss -tuln
这里
-t
-u
-l
-n
查看所有已建立的TCP连接:
ss -tna
-a
查看所有连接及其关联的进程信息:
ss -apn
-p
使用 netstat
netstat
/proc/net
查看所有监听的TCP和UDP端口(数字格式):
netstat -tuln
参数含义与
ss
查看所有连接及其关联的进程信息:
netstat -apn
同样,
-p
查看所有TCP连接的详细信息:
netstat -ant
这里的
-a
-n
-t
通常,我会优先使用
ss
netstat
ss
现代Linux系统之所以更推荐使用
ss
netstat
netstat
/proc/net/tcp
/proc/net/udp
netstat
ss
相比之下,
ss
netlink
netlink
ss
ss
ss
netstat
ss
netstat
wscale
sk_rmem
sk_wmem
timer
ss
所以,虽然
netstat
ss
netstat
ss
ss
netstat
在实际操作中,我们很少需要查看所有的端口信息,更多时候是想找到特定端口、特定状态或特定程序的连接。
ss
netstat
过滤特定端口:
最直接的方法就是结合
grep
ss -tuln | grep ':80'
或者使用
netstat
netstat -tuln | grep ':80'
ss -ant | grep ':22'
这里
-a
-n
-t
过滤特定状态:
ss
state
netstat
grep
ESTABLISHED
ss -tn state established
LISTEN
ss -tn state listening
TIME-WAIT
ss -tn state time-wait
netstat
grep
netstat -ant | grep ESTABLISHED
过滤特定协议:
ss -tln
或
netstat -tln
ss -uln
或
netstat -uln
过滤特定程序或PID:
使用
-p
sshd
ss -apn | grep sshd
或者查找占用某个特定端口的进程,比如80端口:
ss -apn | grep ':80'
输出会包含进程名和PID,例如
users:(("nginx",pid=1234,fd=5))ss -apn
netstat -apn
通过这些组合和过滤,我们可以非常精确地定位到我们关心的网络连接信息,大大提升了排查问题的效率。
ss
netstat
掌握了如何使用命令,下一步就是理解它们输出的信息,特别是那些看似神秘的端口状态。这些状态是TCP/IP协议栈内部连接生命周期的体现,理解它们对于网络故障诊断至关重要。
常见的TCP端口状态及其含义:
TIME_WAIT
ss
netstat
netstat
ss
ESTABLISHED
Recv-Q
Send-Q
LISTEN
0.0.0.0
::
这些状态看似复杂,但理解了它们,你就能更好地诊断网络问题。比如,如果看到大量
TIME_WAIT
net.ipv4.tcp_tw_reuse
net.ipv4.tcp_tw_recycle
TIME_WAIT
CLOSE_WAIT
以上就是如何在Linux中查看端口 Linux ss与netstat对比的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号