网络排查必备:ping、netstat、pidof 命令详解

📅 2026/7/21 22:08:43
网络排查必备:ping、netstat、pidof 命令详解
前言在日常开发与运维中网络问题是最常见也最令人头疼的问题之一。当服务连不上、请求超时、连接被拒绝时我们该如何快速定位问题工欲善其事必先利其器。掌握几个核心的网络命令能让你在排障时事半功倍。本文将围绕三个经典命令展开ping网络层可达性测试、netstat网络状态查看和pidof进程 ID 查询。它们分别从网络连通性、服务监听状态、进程管理三个维度构成了网络排障的基础工具箱。一、ping —— 网络层连通性测试1.1 基本用法ping是最基础也是最常用的网络测试命令用于检测本机到目标主机之间的网络是否可达。# 无限次 ping直到手动停止CtrlC $ ping www.qq.com # 指定发送 5 个探测包后自动停止 $ ping -c 5 www.qq.com1.2 输出解读执行ping -c 5 www.qq.com后典型输出如下PING ins-r23tsuuf.ias.tencent-cloud.net (121.14.77.221) 56(84) bytes of data. 64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq1 ttl48 time35.1 ms 64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq2 ttl48 time35.1 ms 64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq3 ttl48 time35.1 ms 64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq4 ttl48 time35.1 ms 64 bytes from 121.14.77.221 (121.14.77.221): icmp_seq5 ttl48 time35.1 ms --- ins-r23tsuuf.ias.tencent-cloud.net ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms各字段含义如下字段说明icmp_seq探测包的序列号用于检测丢包和乱序ttlTime To Live数据包每经过一个路由器减 1可粗略推断经过的路由跳数time往返时延RTT反映网络延迟情况packet loss丢包率是衡量网络质量的核心指标1.3 注意事项ping基于ICMP 协议工作在网络层L3不涉及端口号。很多云服务器默认禁用了 ICMP 响应安全组策略此时ping不通不代表服务挂了。如果ping通但业务访问失败说明问题在传输层或应用层需要进一步排查。1.4 底层原理简述ping命令向目标主机发送ICMP Echo Request报文目标主机收到后回复ICMP Echo Reply。这一过程不经过传输层TCP/UDP因此无法检测端口状态。整个过程涉及DNS 解析如果目标是域名路由查找决定从哪个网卡发出ARP 请求获取下一跳 MAC 地址ICMP 报文封装与发送接收并解析 ICMP 回复二、netstat —— 网络状态查看利器2.1 命令概述netstat是Network Statistics的缩写是 Linux 下最经典的网络状态查看工具。它可以显示当前系统的网络连接、路由表、接口统计信息等。在服务端开发中我们最常用它来检查某个端口是否在正常监听。2.2 常用选项netstat [选项]选项含义-n拒绝显示别名IP 和端口号以数字形式显示-l仅列出处于 Listening监听状态的 socket-p显示建立连接的程序名和 PID-t仅显示 TCP 协议相关的信息-u仅显示 UDP 协议相关的信息-a显示所有状态默认不显示 LISTEN 状态2.3 典型用法# 查看所有正在监听的 TCP 端口并显示进程信息 $ netstat -nltp示例输出Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 2958285/./tcp_serv tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 523/redis-server tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 676/sshd各字段说明字段含义Proto协议类型tcp / udpRecv-Q / Send-Q接收队列/发送队列长度非 0 时可能表示网络拥塞或处理不及时Local Address本机监听的 IP 和端口0.0.0.0表示监听所有网卡Foreign Address远端地址0.0.0.0:*表示等待任何连接State连接状态LISTEN表示正在监听PID/Program name进程 ID 和程序名称2.4 实时监控如果需要动态观察端口状态变化可以结合watch命令# 每 1 秒刷新一次 netstat 输出 $ watch -n 1 netstat -nltp这在服务启动调试或压力测试时非常有用可以实时观察端口是否正常启用、是否有连接建立。2.5 实用场景场景命令说明检查服务是否启动netstat -nltp | grep 8888确认端口 8888 是否被监听查看端口占用netstat -tunlp | grep 8080找出占用 8080 端口的进程查看已建立的连接netstat -antp | grep ESTABLISHED查看当前活跃的 TCP 连接统计连接数netstat -ant | wc -l粗略统计当前系统连接数三、pidof —— 快速获取进程 ID3.1 命令概述pidof是一个极简但非常实用的命令通过进程名快速获取其 PID进程 ID。在运维和开发中我们经常需要根据 PID 去查看进程状态、发送信号、或者配合netstat确认端口与进程的对应关系。3.2 基本用法# 语法 pidof [进程名] # 示例获取 tcp_server 进程的 PID $ pidof tcp_server 29582853.3 配合 ps 查看完整信息pidof只返回 PID如果想查看进程的详细信息如运行时间、启动参数等可以结合ps使用# 查看头信息 指定进程的详细信息 $ ps axj | head -1 ps ajx | grep tcp_server示例输出PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 2958169 2958285 2958285 2958169 pts/2 2958285 S 1002 0:00 ./tcp_server 8888字段含义PPID父进程 IDPID进程 ID与pidof结果一致PGID进程组 IDSID会话 IDTTY关联的终端STAT进程状态S 表示睡眠且在前台运行TIME累计 CPU 占用时间COMMAND完整的命令行含参数3.4 典型应用场景# 1. 杀掉指定服务 $ kill -9 $(pidof tcp_server) # 2. 检查服务是否正在运行 $ pidof tcp_server echo 服务运行中 || echo 服务未启动 # 3. 配合 netstat 验证端口绑定是否正确 $ netstat -nltp | grep $(pidof tcp_server)四、三个命令的协同排障流程在实际排障中三个命令往往配合使用形成一套完整的检查链路步骤命令检查目标排障结论1ping目标主机 IP 是否可达不通 → 检查网络/防火墙/安全组2netstat -nltp服务端口是否在监听未监听 → 检查服务是否启动/启动失败原因3pidofps服务进程是否存在不存在 → 检查启动脚本/日志报错一个完整的排查示例假设用户反馈“无法访问http://192.168.1.100:8888”先 ping 主机ping 192.168.1.100→ 通 ✓网络层 OK再检查端口监听netstat -nltp | grep 8888→ 无输出 ✗端口未监听检查进程是否存在pidof tcp_server→ 空 ✗服务进程不存在结论服务已挂掉或未启动需查看日志进一步定位原因五、总结命令所属层次核心功能常用场景ping网络层L3检测目标主机是否可达测量延迟和丢包判断网络连通性、排查链路故障netstat传输层/网络层查看端口监听状态、连接信息、进程绑定确认服务是否启动、检查端口占用pidof系统进程管理通过进程名查询 PID快速定位进程、配合 kill/ps 使用排障核心思路从下往上层层递进。先看网络层ping再看传输层netstat最后查进程层pidof/ps。每通过一层就排除一层的问题直到定位到根因。工具本身并不复杂真正的能力体现在——遇到问题时你知道该用哪个工具、看哪个输出、得出什么结论。掌握这三个命令就相当于掌握了网络排障的“三板斧”。无论是日常开发调试还是线上紧急救火它们都能成为你最得力的助手。