一、命令整体结构解析
命令由两部分通过管道符 |
连接:
netstat -tunlp
:核心网络状态统计命令,输出指定类型的网络连接信息;
grep
:文本搜索工具,用于过滤 netstat
的输出结果,仅保留符合特定模式的行。
二、netstat
参数详解
netstat
是网络状态统计工具,通过不同参数组合可筛选所需信息。以下是 netstat -tunlp
中各参数的含义:
三、grep
的作用:过滤输出结果
grep
用于在 netstat
的输出中搜索包含特定关键词的行,常见用途包括:
查找指定端口(如
80
、443
)的监听情况;筛选特定协议(如
tcp
、udp
)的连接;匹配进程名或 PID(如查找
nginx
占用的端口)。
四、完整命令示例与输出解析
以下是不同场景下的命令示例及输出说明:
示例 1:查看所有监听的 TCP/UDP 端口(含进程信息)
sudo netstat -tunlp | grep -E '(:80|:443|:22)'
命令说明:
sudo
:以管理员权限运行(否则-p
可能无法显示进程信息);netstat -tunlp
:显示所有 TCP/UDP 监听端口及对应进程;grep -E '(:80|:443|:22)'
:通过正则表达式筛选包含:80
、:443
或:22
的行(即 80、443、22 端口的监听情况)。输出示例:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5678/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9012/sshd: /usr/sbin
第一列
tcp
:协议类型;第二列
0
:接收队列大小;第三列
0
:发送队列大小;第四列
0.0.0.0:80
:本地 IP:端口(0.0.0.0
表示监听所有 IP);第五列
0.0.0.0:*
:远程 IP:端口(*
表示无特定目标);第六列
LISTEN
:状态(监听中);第七列
1234/nginx: master
:进程 PID(1234)和程序名(nginx 主进程)。
示例 2:仅查看 TCP 监听端口(排除 UDP)
sudo netstat -tnlp | grep 'LISTEN'
命令说明:
-t
:仅 TCP;-n
:数字形式;-l
:监听状态;-p
:进程信息;grep 'LISTEN'
:过滤出状态为LISTEN
的行(冗余,因-l
已限定,但可强化筛选)。输出示例:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5678/nginx: master
示例 3:查找特定进程(如 nginx)占用的端口
sudo netstat -tunlp | grep 'nginx'
命令说明:通过
grep 'nginx'
筛选出所有与nginx
进程相关的监听端口。输出示例:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5678/nginx: master
示例 4:查看 UDP 监听端口(如 DNS 服务)
sudo netstat -unlp | grep ':53'
命令说明:
-u
:仅 UDP;grep ':53'
:筛选 53 端口(DNS 服务默认端口)。输出示例:
udp 0 0 0.0.0.0:53 0.0.0.0:* 9012/systemd-resolve
五、注意事项
权限要求:使用
-p
参数时需sudo
权限,否则无法显示进程 PID 和程序名(会显示*
)。协议过滤:若需同时查看 TCP 和 UDP,可省略
-t
或-u
(如netstat -nlp
显示所有协议的监听端口)。端口冲突排查:若发现某个端口被多个进程占用(罕见),可通过
kill PID
终止多余进程(需谨慎操作)。性能优化:
ss
命令(Linux 内核级工具)比netstat
更高效,推荐替代使用(如ss -tunlp
)。
总结
netstat -tunlp | grep
是网络排查的核心命令组合,通过参数组合和文本过滤,可快速定位指定端口、协议或进程的网络监听状态,是服务器运维和故障诊断的必备工具。