一、文件系统操作
📖 知识点简介
Linux 文件系统是运维工作的基础,掌握文件查找、内容检索、磁盘分析等操作能大幅提升日常排查效率。
🔧 核心命令整理
| 命令 | 作用 | 常用参数 |
|---|---|---|
find |
查找文件 | -name -type -mtime -size -exec |
du |
统计目录大小 | -sh --max-depth -exclude |
df |
查看磁盘空间 | -h -T -i |
tree |
目录结构树 | -L -d -f |
ls -la |
详细列表 | -lhS -t -r |
stat |
查看文件元信息 | 全链路信息 |
🧪 实操示例
bash
# 1. 查找 7 天前修改的日志文件并打包
find /var/log -name "*.log" -mtime +7 -exec tar -czf archive.tar.gz {} ;
# 2. 查找当前目录下大于 100MB 的文件(排除 .git)
find . -type f -size +100M ! -path "./.git/*" -exec ls -lh {} ;
# 3. 统计各目录磁盘占用(深度 1 级)
du -sh /* --exclude=/proc --exclude=/sys 2>/dev/null
# 4. 按修改时间倒序显示文件
ls -lhtr
# 5. 查看文件 inode 信息
stat nginx.conf
# 输出包含: Size, Blocks, Inode, Access, Modify, Change
⚠️ 常见坑点
du与ls文件大小差异 :ls -l显示的是文件实际大小,du显示的是磁盘占用块大小(稀疏文件差异更大)find -exec的{} ;别漏分号 :;表示每条结果执行一次,+结尾表示合并参数find路径别漏参数 :如find /不加-maxdepth会扫全盘,极端情况拖垮 IO
二、文本处理三剑客:grep / sed / awk
📖 知识点简介
这是 Linux 运维的看家本领。日志分析、配置文件批量修改、数据提取都离不开它们。
🔧 核心命令整理
grep(文本搜索)
| 参数 | 作用 | 示例 |
|----------|--------|---------------------------|-----------|
| -E | 扩展正则 | `grep -E "(error | fatal)"` |
| -v | 反向匹配 | 排除无关行 |
| -c | 计数 | grep -c "ERROR" app.log |
| -A/B/C | 上下文 | after/before/context |
| -r | 递归 | 目录递归搜索 |
| -l | 仅输出文件名 | 批量查找哪些文件命中 |
sed(流编辑器)
| 参数 | 作用 | 示例 |
|---|---|---|
-i |
原地修改 | sed -i 's/old/new/g' file |
-n |
静默模式 | sed -n '5,10p' 打印 5-10 行 |
s///g |
替换 | sed 's/foo/bar/g' |
/d |
删除行 | sed '/^#/d' 删除注释行 |
awk(文本分析)
| 模式 | 作用 | 示例 |
|---|---|---|
$NF |
最后一列 | awk '{print $NF}' |
-F |
指定分隔符 | awk -F':' '{print $1}' |
NR |
行号 | awk 'NR>1' 跳过首行 |
BEGIN/END |
前置/结尾操作 | 统计汇总 |
🧪 实操示例
bash
# 1. 实时跟踪错误日志并高亮关键字
tail -f /var/log/nginx/error.log | grep --color=always -E "error|fatal|critical"
# 2. 统计 Nginx 访问日志中 TOP 10 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 3. 批量修改配置文件(备份原文件)
sed -i.bak 's/max_connections = 100/max_connections = 200/g' /etc/mysql/my.cnf
# 4. 提取第 2 到 5 行并输出指定列
sed -n '2,5p' /etc/passwd | awk -F':' '{print $1, $3, $7}'
# 5. 计算日志中某接口的平均响应时间
grep "/api/orders" access.log | awk '{sum+=$NF; count++} END {print sum/count}'
⚠️ 常见坑点
- sed -i 在 macOS 与 Linux 差异 :macOS 需要
sed -i '' 's/old/new/g'(空字符串参数),Linux 直接-i就行 - grep -E 与 egrep :
egrep已废弃,统一用grep -E - awk 中变量引用 :
awk -v var="$shell_var" '...'------Shell 变量必须用-v传入 - sed 替换含斜杠路径 :可以用
#或|代替/分隔符:sed -i 's#/old/path#/new/path#g'
三、进程与系统监控
📖 知识点简介
服务器异常时,快速定位 CPU/内存/磁盘/网络瓶颈是核心能力。
🔧 核心命令整理
| 命令 | 适用场景 | 关键参数 |
|---|---|---|
top/htop |
实时进程监控 | -b -n1 批量模式 |
ps aux |
进程快照 | --sort=-%mem |
netstat/ss |
网络连接 | -tlnp |
lsof |
文件/端口占用 | -i :80 -u nginx |
vmstat |
系统整体性能 | 1 5 每秒采样 5 次 |
iostat |
磁盘 IO 性能 | -x 1 |
dmesg |
内核日志 | -T 人类时间戳 |
🧪 实操示例
bash
# 1. 查看 CPU 占用 TOP 10 进程
ps aux --sort=-%cpu | head -11
# 2. 查看内存占用 TOP 10 进程
ps aux --sort=-%mem | head -11
# 3. 查看端口监听情况(推荐 ss)
ss -tlnp
# 等价于旧版: netstat -tlnp
# 4. 查找谁占用了 80 端口
lsof -i :80
# 5. 查看打开文件最多的进程
lsof -n | awk '{print $1}' | sort | uniq -c | sort -rn | head
# 6. 系统性能一键体检
echo "=== CPU ===" && top -bn1 | head -5
echo "=== MEM ===" && free -h
echo "=== DISK ===" && df -h
echo "=== LOAD ===" && uptime
echo "=== IO WAIT ===" && iostat -c 1 1 | tail -3
⚠️ 常见坑点
top -bn1vs 交互模式 :脚本中使用一定要加-bn1,否则top进入交互界面卡住脚本free -h的 available vs free :available才是真正可用内存(包含可回收缓存),free通常非常小lsof可能很慢 :高并发服务器上大量文件句柄时,lsof可能打挂系统,优先用ss或/procps aux的 VSZ 和 RSS:VSZ 是虚拟内存(很大),RSS 是常驻物理内存(看这个)
四、网络配置与故障排查
📖 知识点简介
网络是服务器的心脏,从 IP 配置到路由追踪,再到连通性测试和带宽分析,是运维高频操作。
🔧 核心命令整理
| 命令 | 功能 | 常用参数 |
|---|---|---|
ip a/ip r |
IP 地址/路由 | show dev eth0 |
ping |
连通性测试 | -c -i -s |
traceroute/mtr |
路由追踪 | MTR 融合 ping+traceroute |
curl |
HTTP 请求测试 | -I -w -o /dev/null -s |
tcpdump |
抓包分析 | -i -nn -X -c |
dig/nslookup |
DNS 解析查询 | +short -x |
nc |
端口测试 | -vz |
🧪 实操示例
bash
# 1. 检查本机网卡信息
ip a show eth0
ip r # 查看默认网关
# 2. 测试端口连通性
nc -zv 192.168.1.100 3306
# Returns: Connection to 192.168.1.100 port 3306 [tcp/mysql] succeeded!
# 3. 一键分析网站响应速度(总耗时+DNS+TCP+TLS+传输)
curl -o /dev/null -s -w "\
time_namelookup: %{time_namelookup}s\n\
time_connect: %{time_connect}s\n\
time_appconnect: %{time_appconnect}s\n\
time_starttransfer: %{time_starttransfer}s\n\
time_total: %{time_total}s\n\
http_code: %{http_code}\n" \
https://example.com
# 4. 抓取 80 端口 HTTP 请求的前 100 个包
tcpdump -i eth0 -nn -c 100 port 80 -X
# 5. DNS 解析排查
dig +short example.com # 快速获取 A 记录
dig -x 8.8.8.8 # 反向解析
nslookup example.com 8.8.8.8 # 使用指定 DNS 服务器
# 6. 持续路由追踪(诊断网络延迟抖动)
mtr -r -c 100 8.8.8.8
⚠️ 常见坑点
curl -w不要漏\n:各时间变量需要显式加换行,否则全挤在一行tcpdump权限 :大部分系统需要root或sudo才能抓包ping超时 vs 拒绝 :ping不通可能是 ICMP 被防火墙拦截,不一定代表端口不通,用nc或telnet确认- DNS 缓存坑 :修改 DNS 后没生效,记得清缓存:
systemd-resolve --flush-caches或重启nscd
五、Shell 脚本批量操作
📖 知识点简介
运维不用脚本等于手工搬砖。循环、条件判断、函数封装、错误处理是自动化运维的基础。
🔧 核心命令整理
| 语法 | 作用 | 示例 |
|----------------------|------|--------------------------|------|----------------|
| for i in {1..10} | 循环 | for i in *.log; do ... |
| while read line | 逐行读取 | 处理文件列表 |
| if [ -f "$f" ] | 条件判断 | 文件/目录/状态判断 |
| ` | | /&&` | 短路执行 | cmd1 && cmd2 |
| trap | 信号捕获 | trap 'cleanup' EXIT |
| set -euxo pipefail | 安全模式 | 脚本防崩三板斧 |
🧪 实操示例
bash
#!/bin/bash
set -euo pipefail # 安全模式:出错即停、未定义变量报错、管道中断
LOG_DIR="/var/log/app"
BACKUP_DIR="/backup/logs"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)
# 1. 批量备份并清理过期日志
backup_logs() {
mkdir -p "$BACKUP_DIR/$DATE"
for log_file in "$LOG_DIR"/*.log; do
if [ -f "$log_file" ]; then
cp "$log_file" "$BACKUP_DIR/$DATE/"
> "$log_file" # 清空原日志(不删除文件句柄)
echo "✓ Backed up: $(basename "$log_file")"
fi
done
# 清理 N 天前的备份
find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +$RETENTION_DAYS \
-exec rm -rf {} ; -prune
echo "✅ 备份完成,已清理 ${RETENTION_DAYS} 天前的备份"
}
# 2. 批量执行远程服务器的命令
remote_exec() {
local servers=("web01" "web02" "web03")
local cmd="$1"
for server in "${servers[@]}"; do
echo ">>> Executing on $server..."
ssh "$server" "$cmd" || echo "⚠️ Failed on $server"
done
}
# 3. 检查多台服务器磁盘使用率并发送告警
check_disk_usage() {
local threshold=80
local servers=("$@")
for server in "${servers[@]}"; do
usage=$(ssh "$server" "df -h / | awk 'NR==2 {print $5}' | tr -d '%'")
if [ "$usage" -gt "$threshold" ]; then
echo "🔴 ALERT: $server 磁盘使用率已达 ${usage}%"
# 这里可以接告警:curl -X POST alert-webhook...
else
echo "🟢 $server 磁盘使用率: ${usage}%"
fi
done
}
# 执行
backup_logs
remote_exec "systemctl restart nginx"
check_disk_usage "web01" "web02" "db01"
⚠️ 常见坑点
set -e的隐式陷阱 :grep -q pattern找不到时会返回 1,set -e会退出脚本。解决方案:grep -q pattern || true- 变量引用务必双引号 :
rm -rf $dir如果$dir为空 →rm -rf /😱 必须写rm -rf "$dir" while read的 IFS :默认会 trim 前后空格,处理含空格的路径需:while IFS= read -r linetrap清理临时文件 :脚本异常退出时务必用trap 'rm -f "$tmpfile"' EXIT确保清理ssh批量执行建议用pdsh或ansible:纯 for 循环 ssh 效率低,连接复用可加-o ControlMaster=auto
六、日志排查实战策略
📖 知识点简介
生产故障排查 70% 以上的时间在查日志。掌握高效查日志的方法论,比死记硬背命令更重要。
🔧 核心方法
| 场景 | 策略 | 命令组合 |
|--------|--------------------|-----------------------------------------------|-------------------|--------------------------------------------------------------------------------|----------|------------|
| 实时跟踪 | tail -f + grep | `tail -f app.log | grep ERROR` |
| 时间段过滤 | 结合 sed/awk | awk "/2026-07-01 10:00/,/2026-07-01 10:05/" |
| 关键字上下文 | grep -A/B/C | grep -B5 -A10 "OOM" syslog |
| 异常聚合 | sort uniq -c | `grep ERROR | awk '{print $NF}' | sort | uniq -c | sort -rn` |
| 慢查询定位 | grep+awk 排序 | `grep "SLOW" | awk -F' | ' '{print 2,1}' | sort -rn | head` |
🧪 实操示例
bash
# 1. 查看 10:00-10:05 之间的日志
awk '/2026-07-01 10:00:/,/2026-07-01 10:05:/' app.log
# 2. 最近 30 分钟内的错误(结合 timestamp)
awk -v d="$(date -d '30 minutes ago' '+%H:%M')" '$0 ~ d || $1 >= d && /ERROR/' app.log
# 3. 统计各类错误出现次数
grep -oP '(?<=ERROR: )\w+' app.log | sort | uniq -c | sort -rn
# 4. 日志旋转后仍跟踪最新文件(tail -F 大写 F)
tail -F /var/log/app/*.log | grep --line-buffered -E "CRITICAL|FATAL"
# 5. 查找 IP 的访问记录链(时间段+上下文)
grep -A20 "192.168.1.100" access.log | grep -E "GET|POST|response" | head -50
⚠️ 常见坑点
- 日志轮转(logrotate)后文件句柄问题 :应用需配置 copytruncate 或发送 USR1 信号重开日志文件,否则
tail -f跟丢 grep -r搜大日志目录时耗尽内存 :大文件用zgrep(压缩日志)或timeout 30 grep ...限时- 时间戳格式不统一 :不同模块日志可能用 UTC 或格式各异,先
date -d统一对比 - 别忘了
/var/log/messages和journalctl:系统级日志常常是第一手线索
七、安全运维基础
📖 知识点简介
服务器安全是底线。SSH 加固、端口管控、文件权限、审计日志、fail2ban 是基础安全三板斧。
🔧 核心命令整理
bash
# 1. SSH 安全加固 Checklist
grep -E "^Port |^PermitRootLogin |^PasswordAuthentication |^PubkeyAuthentication" /etc/ssh/sshd_config
# 建议配置:
# Port 2222 # 改默认端口
# PermitRootLogin no # 禁止 root 直接登录
# PasswordAuthentication no # 仅允许密钥登录
# PubkeyAuthentication yes
# MaxAuthTries 3
# ClientAliveInterval 300
# ClientAliveCountMax 2
systemctl restart sshd
# 2. 检查 SUID/SGID 文件(提权漏洞)
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
# 3. 检查 777 权限文件
find / -type f -perm 0777 2>/dev/null | head -20
# 4. 查看系统登录日志
last -10 # 最近登录记录
lastb -10 # 登录失败记录
journalctl _COMM=sshd --since today | grep "Failed password"
# 5. fail2ban 使用示例
fail2ban-client status # 查看所有 jail 状态
fail2ban-client status sshd # 查看 SSH 封禁情况
fail2ban-client set sshd banip 1.2.3.4 # 手动封禁 IP
# 6. 端口安全扫描(自检)
ss -tlnp | awk '{print $4}' | grep -v '127.0.0.1:' | grep -v '::1:'
# 所有开放端口应该都有明确用途,不要无故监听 0.0.0.0
# 7. 文件完整性校验
md5sum /bin/ls /bin/ps /bin/netstat # 建立基线
# 日常巡检对比:md5sum -c baseline.md5
⚠️ 常见坑点
- 改 SSH 端口后务必测试新连接:改配置前先在另一个终端保持连接,改完测试没问题再退出,否则可能把自己锁在门外
PermitRootLogin no的真实含义 :禁止 root 通过 SSH 登录,但可以从普通用户su -或sudo提权- fail2ban 别把自己封了 :配置
ignoreip = 127.0.0.1/8 ::1 你的办公IP保护管理地址 find -perm的 4000 vs 4000+ :-perm -4000匹配包含 SUID 位的文件,-perm 4000精确匹配只有该位的文件
八、日常巡检脚本模板
📖 知识点简介
运维巡检是每天必做的功课,把常见检查点写成脚本,配合定时任务(cron)自动执行,节省大量时间。
🧪 实操示例
bash
#!/bin/bash
#===== 日常巡检脚本:daily_check.sh =====
# 功能:CPU/内存/磁盘/进程/网络/安全 一键检查
# 用法:bash daily_check.sh | tee -a /var/log/daily_check.log
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
HOSTNAME=$(hostname)
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 巡检时间: $DATE${NC}"
echo -e "${GREEN} 主机: $HOSTNAME${NC}"
echo -e "${GREEN}========================================${NC}"
# 1. 系统负载
LOAD=$(uptime | awk -F'load average:' '{print $2}')
CPU_CORES=$(nproc)
LOAD_1=$(echo $LOAD | awk -F',' '{print $1}' | tr -d ' ')
if (( $(echo "$LOAD_1 > $CPU_CORES" | bc -l) )); then
echo -e "${RED}🔴 负载异常: $LOAD (核心数: $CPU_CORES)${NC}"
else
echo -e "${GREEN}🟢 负载正常: $LOAD${NC}"
fi
# 2. 内存使用
MEM_TOTAL=$(free -h | awk '/Mem:/{print $2}')
MEM_USED=$(free -h | awk '/Mem:/{print $3}')
MEM_AVAIL=$(free -h | awk '/Mem:/{print $7}')
MEM_PERC=$(free | awk '/Mem:/{printf "%d", $3/$2 * 100}')
if [ "$MEM_PERC" -gt 90 ]; then
echo -e "${RED}🔴 内存告警: ${MEM_USED}/${MEM_TOTAL} (${MEM_PERC}%)${NC}"
elif [ "$MEM_PERC" -gt 75 ]; then
echo -e "${YELLOW}🟡 内存偏高: ${MEM_USED}/${MEM_TOTAL} (${MEM_PERC}%)${NC}"
else
echo -e "${GREEN}🟢 内存正常: ${MEM_USED}/${MEM_TOTAL} (可用: ${MEM_AVAIL})${NC}"
fi
# 3. 磁盘使用
df -h | grep -v tmpfs | grep -v loop | awk 'NR>1 {
sub(/%/,"",$5);
if ($5 >= 90) printf "🔴 %s %s (%s)\n", $6, $3, $5"%";
else if ($5 >= 75) printf "🟡 %s %s (%s)\n", $6, $3, $5"%";
else printf "🟢 %s %s (%s)\n", $6, $3, $5"%";
}'
# 4. 僵尸进程
ZOMBIE=$(ps aux | awk '{if ($8 == "Z") print}')
if [ -n "$ZOMBIE" ]; then
echo -e "${RED}🔴 发现僵尸进程:${NC}"
echo "$ZOMBIE"
fi
# 5. 检查关键服务
for svc in nginx mysql docker; do
if systemctl is-active --quiet "$svc" 2>/dev/null; then
echo -e "${GREEN}🟢 $svc 运行正常${NC}"
else
echo -e "${RED}🔴 $svc 未运行!${NC}"
fi
done
# 6. 检查失败登录
FAILED_LOGINS=$(journalctl _COMM=sshd --since "1 day ago" 2>/dev/null | grep "Failed password" | wc -l)
if [ "$FAILED_LOGINS" -gt 50 ]; then
echo -e "${RED}🔴 SSH 暴力破解警告: 今日失败登录 ${FAILED_LOGINS} 次${NC}"
else
echo -e "${GREEN}🟢 SSH 登录安全: 失败 ${FAILED_LOGINS} 次${NC}"
fi
# 7. 检查已挂载 NFS
mount | grep nfs | awk '{print "📁 NFS 挂载: " $1 " → " $3}'
# 8. SELinux / AppArmor 状态
if command -v getenforce &>/dev/null; then
echo -e "🛡️ SELinux: $(getenforce)"
fi
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 巡检完成${NC}"
echo -e "${GREEN}========================================${NC}"
配合 crontab 实现自动巡检:
bash
# 每天 9:00 执行巡检并发送结果到健康检查平台
0 9 * * * /opt/scripts/daily_check.sh | mail -s "📋 每日巡检报告 - $(hostname)" ops@company.com
# 每 5 分钟监控磁盘告警
*/5 * * * * /opt/scripts/disk_alert.sh
九、容器(Docker)运维
📖 知识点简介
Docker 已是标配,运维需要掌握容器生命周期管理、日志、网络、资源限制和镜像瘦身。
🔧 核心命令整理
| 命令 | 用途 | 关键参数 |
|---|---|---|
docker ps |
查看容器 | -a -q --format |
docker logs |
容器日志 | -f --tail -t |
docker stats |
容器资源 | --no-stream |
docker exec |
进入容器 | -it |
docker inspect |
容器详情 | --format '{{.Name}}' |
docker system df |
磁盘占用 | -v 查看详情 |
docker prune |
清理孤儿 | -a --filter |
🧪 实操示例
bash
# 1. 查看所有运行容器的资源占用
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemPerc}}\t{{.MemUsage}}"
# 2. 查看容器日志的最后 100 行并实时追踪
docker logs -f --tail 100 my-container
# 3. 清理 7 天前的悬空镜像(配合 crontab 每周执行)
docker image prune -a --force --filter "until=168h"
# 4. 容器资源限制启动
docker run -d --name web \
--memory="512m" --memory-reservation="256m" \
--cpus="1.5" --pids-limit=200 \
nginx:alpine
# 5. 批量停止并删除所有退出容器
docker rm $(docker ps -aq -f status=exited) 2>/dev/null || true
# 6. 查看容器磁盘空间占用 TOP
docker system df -v | grep -A 10 "Containers space usage:"
# 7. 安全扫描镜像
docker scout quickview nginx:alpine # Docker Desktop 内置
trivy image nginx:latest # 推荐:Trivy 开源扫描器
⚠️ 常见坑点
-
日志无限增长 :默认不限制容器日志大小!必须配置:
json// /etc/docker/daemon.json { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } -
docker exec -it在脚本中报错 :脚本里没有 TTY,去掉-t:docker exec -i -
镜像构建不要用
latest标签:部署必须锁定版本标签,避免意外拉取新版本导致不兼容 -
docker prune要谨慎 :docker system prune -a会删除所有未在运行的容器和未使用的镜像,确认无误再执行
十、故障处理思路总结
📖 知识点简介
遇到故障不要慌,遵循"先恢复、后定位、再根治"的原则,用系统化的排查思路替代乱枪打鸟。
🔧 排查方法论流程
bash
问题报告
│
├─ 能否访问? ──→ ping | curl | nc → 网络层
├─ 响应慢? ──→ top | free | iostat → 资源层
├─ 报错/异常? ──→ tail -f logs | journalctl → 应用层
├─ 配置被改? ──→ stat | diff | git log → 变更层
└─ 重启能解决? ──→ 临时恢复,事后查根因
🧪 常见场景速查
| 现象 | 排查命令 | 常见原因 |
|------------|---------------------------------------------|----------------------------------|---------------|
| 连接被拒绝 | ss -tlnp 检查端口 / nc -zv 确认监听 | 服务挂了 / 防火墙拦截 |
| 请求超时 | mtr -r 路由追踪 / curl -w 分时段耗时 | 网络抖动 / DNS 解析慢 |
| CPU 100% | top -b -n1 → perf top / strace -p PID | 死循环 / GC 频繁 / CPU 密集任务 |
| 内存 OOM | `dmesg -T | grep oom-kill→journalctl -xe` | 内存泄漏 / 配置内存不足 |
| 磁盘满 | df -h → du -sh /* --exclude 逐层定位 | 日志未轮转 / 大文件堆积 |
| 连接数打满 | ss -s 统计 / ss -t state established | 连接未释放 / 被攻击 |
| 负载高但 CPU 低 | iostat -x 1 看 %iowait | 磁盘 IO 瓶颈 / NFS 挂掉 |
| 突然断网 | ip a 检查网卡 / systemctl restart network | 网卡 down / 驱动故障 |
⚠️ 核心原则
- 变更回滚是第一方案:最近 15 分钟内有人改了配置?先回滚再说
- 别在生产环境直接调试:有灰度/预发环境先复现
- 保留现场证据 :
dmesg、journalctl -u service、--since "5 min ago"的日志先保存 - 监控历史数据比实时数据更有价值:看 Grafana 趋势图,不是只看当前值
- 记录故障复盘:每次故障记录 → 补充监控告警 → 更新故障手册
📋 总结
| 掌握程度 | 能力要求 |
|---|---|
| ⭐ 必备 | find grep sed awk ps top ss curl tail |
| ⭐⭐ 进阶 | tcpdump strace lsof iostat docker systemctl |
| ⭐⭐⭐ 高阶 | bpftrace perf ebpf promql ansible 自动化编排 |
好记性不如烂笔头,把这些命令用起来、写成脚本、集成到监控,才是真正的运维能力。 别一次性背完,遇到问题查一下,多用几次自然就记住了。🛠️