深色模式
SOP 标准作业程序
摘要:SOP 是把高频、易错的操作固化为固定步骤的文档。本文给出 SOP 的七要素结构、可直接复制的模板,以及用脚本检查 SOP 完整性的方法。
适用环境
bash
mkdir -p sop && cd sop
# SOP 建议与代码同仓,随变更一起评审
git rev-parse --is-inside-work-tree 2>/dev/null || echo "建议在仓库中编写"1
2
3
2
3
操作步骤
第 1 步:判断哪些操作需要 SOP
bash
cat > sop-candidates.md <<'EOF'
符合任一即需写 SOP:
- 每月执行超过 1 次
- 做错会造成业务影响
- 只有少数人知道怎么做
- 涉及多个角色协同
EOF1
2
3
4
5
6
7
2
3
4
5
6
7
第 2 步:套用七要素模板
bash
cat > template.md <<'EOF'
# <操作名称> SOP
> 摘要:<一句话说明做什么、为什么>
## 适用范围
- 环境:<prod/staging>
- 前置条件:<权限、工具、备份>
## 角色与职责
| 角色 | 职责 |
| --- | --- |
| 执行人 | 按步骤操作 |
| 审批人 | 确认风险可接受 |
## 操作步骤
### 1. <动作>
命令 + 期望输出说明(缩进块写法示例)
kubectl -n prod get deploy demo
## 验证
- [ ] <可判定的检查项>
## 回滚
- 触发条件:<什么情况下回滚>
- 回滚命令:<可复制>
## 例外与常见问题
| 现象 | 处理 |
EOF1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
第 3 步:写"可执行"的步骤
bash
# 好:命令完整,含命名空间与参数
kubectl -n prod scale deploy/demo --replicas=6
# 坏:依赖读者理解
扩容 demo1
2
3
4
5
2
3
4
5
每一步都要包含:做什么命令 → 看到什么算对 → 不对怎么办。
第 4 步:必填字段自动检查
bash
cat > check-sop.sh <<'EOF'
#!/usr/bin/env bash
for f in *.md; do
[ "$f" = "template.md" ] && continue
miss=""
for s in '## 适用范围' '## 角色与职责' '## 操作步骤' '## 验证' '## 回滚'; do
grep -q "$s" "$f" || miss="$miss $s"
done
[ -z "$miss" ] && echo "$f OK" || echo "$f 缺失:$miss"
done
EOF
chmod +x check-sop.sh && ./check-sop.sh1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
第 5 步:试跑与修订
bash
# SOP 必须由没做过的人照着读一遍,能独立完成才算合格
cat > walkthrough-log.md <<'EOF'
试跑人:<姓名> 日期:<日期>
- 卡住的步骤:第 3 步(命令参数不清楚)
- 修订:补全参数说明
EOF1
2
3
4
5
6
2
3
4
5
6
验证
bash
# 1. 所有 SOP 必填字段齐全
./check-sop.sh | grep -c OK
# 2. 每条 SOP 都有回滚章节
grep -l '## 回滚' *.md | wc -l
# 3. 命令块可提取且语法基本正确
grep -hoE 'kubectl[^`]+' *.md | head -51
2
3
4
5
6
7
8
2
3
4
5
6
7
8
常见坑
步骤写"确认无误后继续"
什么叫无误没说清。每一步都要有可观察的判据。
SOP 写完不试跑
未经试跑的 SOP 通常有隐性前提("你先登录 XX")。必须由陌生人试跑一遍。
SOP 与实际命令不一致
系统升级后命令失效,照抄会出错。SOP 随变更一起评审,并在 CI 中提取命令做语法检查。