Linux 进阶命令与排障 · 九、网络分层排障至十五、排障记录模板
先按通用框架保存现场,再从故障剧本选择具体检查。需要操作细节时直接进入 systemd、CPU/内存、磁盘 或 网络;排障记录模板用于保存结论。
九、网络分层排障
9.1 从本机到应用逐层验证
# 地址和路由
ip -brief address
ip route get <destination-ip>
# DNS
getent ahosts <hostname>
dig +short <hostname>
# TCP
nc -vz -w 3 <host> <port>
# TLS
openssl s_client -connect <host>:<port> -servername <hostname> </dev/null
# HTTP
curl --connect-timeout 3 --max-time 10 -v https://<hostname>/<path>curl -k 会跳过 TLS 证书验证,只适合隔离的临时诊断,不能成为生产调用或修复方案。
9.2 端口和连接状态
ss -lntup
ss -s
ss -tan state established
ss -tan state time-wait | wc -l
sudo ss -lntp 'sport = :<port>'9.3 路由路径和抓包
tracepath <host>
traceroute <host>
sudo tcpdump -ni <interface> host <host> and port <port>抓包可能包含认证信息和业务数据。限定网卡、主机、端口、包数和时间,按敏感数据管理:
sudo timeout 30s tcpdump -ni <interface> -c 500 host <host> and port <port>十、SSH 与安全传输
10.1 连接和诊断
ssh <user>@<host>
ssh -p <port> <user>@<host>
ssh -v <user>@<host> # 一层调试,最多可用 -vvv
ssh -J <jump-user>@<jump-host> <user>@<target-host>~/.ssh/config 示例:
Host app-prod
HostName <target-host>
User <user>
ProxyJump <jump-user>@<jump-host>
IdentityFile ~/.ssh/<private-key>
IdentitiesOnly yes首次连接应通过可信渠道核对主机密钥指纹。主机密钥变化可能是正常重装,也可能是中间人攻击;不要未经核验就删除 known_hosts 条目。
10.2 文件传输
scp <file> <user>@<host>:<destination>
sftp <user>@<host>
rsync -av --dry-run <source>/ <user>@<host>:<destination>/
rsync -av <source>/ <user>@<host>:<destination>/rsync 源路径结尾的 / 表示复制目录内容;无 / 表示复制目录本身。使用 --delete 会删除目标端多余文件,必须先运行完全相同参数的 --dry-run 并审批。
10.3 端口转发
# 本地 8080 转到远端只能从跳板机访问的 service:80
ssh -N -L 127.0.0.1:8080:<service-host>:80 <user>@<jump-host>
# SOCKS5 代理
ssh -N -D 127.0.0.1:1080 <user>@<jump-host>绑定到 127.0.0.1,避免无意把内部服务暴露给局域网。端口转发仍受公司访问策略约束。
10.4 私钥权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/<private-key>
chmod 600 ~/.ssh/config
chmod 644 ~/.ssh/known_hosts不要复制、提交或聊天传输私钥。怀疑泄露时立即吊销并轮换,而不是只删除本地文件。
十一、进程和资源限制
ulimit -a
ulimit -n # 当前 Shell 的文件描述符软限制
cat /proc/<pid>/limits
sysctl <key>
systemctl show <service> -p LimitNOFILE临时 sysctl -w 或提高 ulimit 并不一定影响已启动服务。systemd 服务通常应通过 Unit 的资源限制配置,经验证和变更流程发布。
11.1 cgroup 与 systemd 资源视图
systemd-cgtop
systemctl status <service>
systemctl show <service> -p MemoryCurrent -p CPUUsageNSec -p TasksCurrent容器或服务的资源受 cgroup 限制时,主机仍有空闲资源也可能发生 OOM 或节流。
十二、定时任务
crontab -l
sudo crontab -l -u <user>
systemctl list-timers --allCron 环境通常比交互式 Shell 更精简,应使用绝对路径、明确工作目录、记录标准输出与错误,并避免把凭据写在 crontab 中。
systemd timer 排查:
systemctl status <timer>.timer
systemctl list-timers <timer>.timer
journalctl -u <timer>.service --since today十三、会话和长任务
nohup <command> > <log-file> 2>&1 &
disown更可控的生产方式是使用 systemd、作业调度器或容器平台,它们能定义重启、日志、资源和生命周期。交互式维护可使用 tmux:
tmux new -s maintenance
tmux list-sessions
tmux attach -t maintenance十四、常见故障剧本
以下按现象选择证据和验证标准;具体命令集中在对应工具章节,避免在每个剧本重复抄一遍。
| 现象 | 首先确认 | 下一步与恢复标准 |
|---|---|---|
| 服务启动失败 | systemd 状态与 journal,核对 Unit、退出码、用户和工作目录 | 查配置、权限、端口、依赖与资源限制;修复后同时验证端口、健康检查和业务请求,不能只看 active |
| 磁盘满 | 容量/inode、已删除仍占用文件 | 区分容量与 inode,再找增长来源;按留存策略轮转、归档或扩容后重新测量,不直接删数据库或运行时文件 |
| CPU 突升 | CPU 采样、请求量、延迟、近期发布 | 关联重试、GC、线程数与流量;与正常吞吐下的基线比较,确认业务延迟和错误率恢复 |
| 内存耗尽/OOM | 内存与内核日志、cgroup 限制 | 区分主机 OOM、cgroup OOM、缓存或泄漏;保留趋势和进程证据,重启后的短暂正常不等于根因已修复 |
| 域名能解析但请求失败 | 分层网络验证的 DNS → 路由 → TCP → TLS → HTTP | 记录每层实际错误;修复后在原调用路径和超时约束下重试业务请求 |
十五、排障记录模板
事件:
影响范围:
首次发现时间(含时区):
最近正常时间:
当前症状与错误:
目标主机/服务/版本:
近期变更:
已验证事实:
待验证假设:
已执行动作与结果:
止损状态:
回滚条件:
下一步与负责人:完整记录能防止重复试错,也能把“相关”与“因果”区分开来。
继续阅读
- 知识专题
- 知识专题
- 命令与系统观察