Skip to content

About

Linux / Windows / macOS / Kubernetes / DevOps / 排障 / 指南 / 中间件 / 教程 / AI 与 MLOps 十分支中文命令速查与故障诊断栈。

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

命令速查栈(多分支)

Linux / Windows / macOS / Kubernetes / DevOps / 排障 / 指南 / 中间件 / 教程 / AI 与 MLOps / Office 多分支速查栈。支持多分支切换,新增分支不需要改代码。

快速开始

需要 Node.js 22 及以上版本。

npm install
npm run build      # 构建到 build/

本地预览:

npx serve build     # 或 python3 -m http.server -d build 8000

内容源是私有子模块

command/ 是私有仓库 dos2un1x/command 的 git submodule。公开 clone 只包含站点代码;没有该仓库读取权限时,npm run build / npm run verify 会提示初始化子模块并停止。

有权限的人首次拉取后执行:

git submodule update --init --recursive

也可以直接 git clone --recurse-submodules git@github.com:dos2un1x/command-hub.git。

内容变更在 command/ 子模块内提交并推送,然后在 command-hub 提交更新后的子模块指针:

git -C command add .
git -C command commit -m "content: ..."
git -C command push

git add command
git commit -m "chore(content): 更新 command 子模块"

GitHub Actions 用只读 Deploy Key 拉取该子模块;没有权限的公开贡献者可以运行 npm test,但不能完整构建。站点发布后的 HTML/搜索索引仍然是公开的,私有化保护的是 Markdown 源与提交历史。

目录结构

command/<分支>/<slug>.md   内容源(Markdown,私有子模块)
branches.json              分支注册表
template/                  EJS 模板
template/snake.ejs         贪吃蛇小游戏页(非命令页)
template/tetris.ejs        俄罗斯方块小游戏页(非命令页)
template/review.ejs        每日复习页
template/diagnose.ejs      故障诊断向导页
assets/                    CSS / JS / 数据源
assets/data/diagnose.json  诊断向导决策树数据
assets/js/snake-core.js    贪吃蛇纯逻辑(可单测)
assets/js/tetris-core.js   俄罗斯方块纯逻辑(可单测)
assets/js/visits-core.js   访问统计纯逻辑(可单测)
assets/js/visits.js        访问统计上报与首页渲染
server/visit.php          访问统计接口(PHP + SQLite/MySQL,虚拟主机可用)
server/config.sample.php  访问统计配置模板(复制为 config.php)
server/schema.sql         访问统计 MySQL 表结构(可选)
test/                      单测(node --test)
test/php-mysql.Dockerfile  MySQL 集成测试用的 PHP 镜像
scripts/                   构建与校验脚本(scripts/lib/ 为公共解析与 SEO 逻辑)
build/                     构建产物(gitignore)
deploy/                    本地部署状态与日志(gitignore)
public/  public.zip        发布暂存与打包产物(gitignore,由 npm run package 生成)

首页

template/index.ejs 渲染十一分支入口,采用蓝紫渐变、圆角卡片与胶囊式分支标签,让首页到内页的过渡保持连续。页面包含品牌文字标识、分支切换、全局搜索、条目/分支/分类统计、按目的进入的“我想…”(查命令 / 学一个领域 / 排故障 / 上线服务 / 跟着向导查)五张场景卡与“每日复习”“故障诊断向导”入口、十一个分支索引卡(名称、描述、分类与条目数)、跨分支高频入口,以及首屏可见的“小彩蛋”游戏入口。样式集中在 assets/css/index.css 的首页段落;分支卡片与计数由构建参数 branchCards 注入,配置了 learningPath 的分支页顶部会注入学习路径入口。

首页不按单一命令栈组织,而是把 Linux、Windows、macOS、Kubernetes、DevOps、排障、指南、中间件、教程、AI 与 MLOps、Office 作为十一个并列入口;页脚保留“全部条目”“故障诊断向导”“每日复习”、收藏提示、备案号与署名。

学习层

站点在“查”之外提供一条“学”的路径,相关页面集中在指南分支的“学习路径”类目:

  • /guide/learning-paths.html:总入口,列出 12 条领域路径、4 条岗位路径、12 个心智模型和 35 个故障演练,并给出六周推进建议;技术选型从 technology-selection-map 的七条决策树进入。
  • 学习路径:每个领域 4 个阶段,每阶段含阅读顺序(通常 7–13 个真实站内链接)、动手任务和过关标准,如 linux-learning-path、k8s-learning-path;另有可观测性、数据库、网络三条跨域路径。
  • 心智模型:每个领域一页,只讲 5–7 个核心概念和它们的关系,如 linux-mental-model、observability-mental-model。
  • 故障演练:教程分支 lab 类目的 35 页(12 个基础、10 个进阶、13 个变更/恢复),在 kind、Docker Compose 或临时目录里注入故障,按“观察 → 判断 → 修复 → 复盘”练习,不碰生产;其中 13 个变更/恢复演练覆盖 K8s 升级、证书轮换、数据库切换、etcd 快照恢复、区域故障、Redis 切换、Kafka broker 替换、备份恢复验证、Velero 恢复、PostgreSQL PITR、Kafka 恢复、Elasticsearch 恢复和 DNS 提供商切换;lab-learning-path 给出四周基础计划和进阶插入方式;各 Lab 的实际执行程度、验证限制和下一批计划见 LAB-SMOKE-STATUS.md。
  • 故障复盘:排障分支的 15 篇匿名化合成案例(如 incident-dns-ndots、incident-etcd-quorum),按“现象 → 时间线 → 影响面 → 误导线索 → 根因 → 修复 → 预防”展开,用于练习从错误线索中收敛。
  • 恢复 Runbook:指南分支的 runbook-etcd-restore、runbook-velero-restore、runbook-postgres-pitr、runbook-kafka-restore、runbook-es-restore、runbook-k8s-upgrade、runbook-cert-rotation、runbook-db-failover、runbook-redis-failover、runbook-kafka-broker-replace、runbook-dns-failover、runbook-backup-restore-verification,按“前置检查 → 恢复步骤 → 验证 → 失败回滚”组织;新增页面均从事故响应手册、排障学习路径和灾难恢复页手工入链,其中升级、证书、切换、etcd 恢复和区域综合演练有对应的 lab-* 演练页。
  • 平台生命周期:platform-lifecycle-matrix 汇总操作系统、Kubernetes 与 DevOps 工具的支持窗口和升级节点;version-eol-matrix 继续维护 K8s/AI/中间件的版本与 EOL。
  • 速查与快捷键:cheatsheet-index 按系统、K8s、网络、数据库、DevOps、安全和 AI 汇总 42 张速查表;shortcuts-overview 汇总 Windows、macOS、Linux 桌面、终端、浏览器、VS Code 和 Office 七类快捷键;指南分支保留三件套总表,Office 分支另有 Word、PowerPoint 与 Excel 的快捷键专题页。
  • 公开事故复盘:指南分支收录 AWS S3 2017、GitLab 2017、GitHub 2018、Cloudflare 2019/2020、CircleCI 2023、Slack 2021、Datadog 2023、Roblox 2021、Facebook 2021、Google Cloud 2019、AWS Kinesis 2020 共 12 篇摘要与检查清单,事实以原始报告为准;public-postmortem-index 按根因分组,把事故、教训和对应 Runbook 串起来。
  • 精确错误页:排障分支覆盖 x509、connection reset、context deadline exceeded、i/o timeout、TLS handshake timeout 等精确报错;Windows/macOS 排障单独成类。
  • 企业运维:Windows 侧新增 WinRM、GPO 诊断、AD 复制排障、Defender/Intune;macOS 侧新增 MDM、FileVault、钥匙串,覆盖注册、策略下发、复制健康和凭据管理。
  • 读完自测:全部 2,100 个页面在页尾有 3 道自测题,答案折叠;/review.html 从全站 6,300 道题中抽题,支持按分支筛选、只练错题、连续答对两次移出随机池、每日一题和掌握进度。
  • 版本与生命周期:指南分支的 version-eol-matrix 集中记录 Kubernetes、AI 推理与中间件的当前版本、EOL/归档状态和迁移建议;npm run freshness 负责检查这些页面的最后核对日期。
  • /diagnose.html:6 棵可点击的故障决策树,覆盖 502/504、Pod Pending/CrashLoop、磁盘满/inode、DNS/网络、CPU/负载和数据库连接/慢查询;每步给出引导问题、验证命令和对应条目。

详情页阅读体验

  • 长页目录:正文达到 8,000 字时,在标题与简介之后自动插入本页目录,锚点直接跳到对应章节;短页不显示,避免噪声。
  • 相关命令:自动推荐按“同分类同前缀 → 同分类 → 同前缀 → 字母序邻居”排序,以卡片形式展示命令名、所属分支与一句话说明,比纯字母邻居更贴近当前主题;累计核对 590 个高频页,为其中 583 页补齐 4–6 条跨工具链的手工相关命令,AI、DevOps、K8s、中间件、教程、指南、Windows、macOS 的相关命令覆盖均达到 100%,Linux 提升到 71%。
  • 面包屑、上一条/下一条与手工维护的 ## 相关命令 区块保持原样;页面已有手工相关命令时不再叠加自动推荐。版本敏感页显示“版本信息最后核对”日期。
  • 分类页会显示“先读这三篇”,由 assets/data/category-featured.json 配置;构建期校验 slug 必须属于该分类,写错直接失败。
  • 搜索支持别名(如 k8s → kubectl、ripgrep → rg、fdfind → fd),配置在 assets/data/search-aliases.json。
  • 命令页底部有“遇到问题?”入口,按 assets/data/troubleshoot-links.json 链到对应排障页;顶部按分支显示“系统学习”入口。

新增工具或概念页时,建议在页尾补 ## 读完自测;学习路径、心智模型和故障演练的写法见 CONTRIBUTING。所有内容页的站内链接统一用相对路径(../k8s/pod.html),因此 public/ 可以在站点根、子路径或本地 file:// 下直接预览。

Windows、macOS、Vim 与快捷键

  • Windows 分支:CMD 文件/系统/网络命令、21 个 PowerShell 核心 cmdlet、WSL 与 wslconfig,以及 Windows Server/AD 的 dcdiag、repadmin、dsquery、diskpart、wbadmin 等;企业场景补充 winrm、gpo-diagnostics、ad-replication、defender-intune。系统操作、注册表、防火墙、计划任务、更新、磁盘、恢复、远程桌面和用户账户放在指南分支的「Windows 与 PowerShell」分类。
  • macOS 分支:BSD 文件命令、launchctl/pmset/softwareupdate/tmutil/csrutil 等系统命令、网络工具、Xcode 命令行工具与 Homebrew、diskutil/hdiutil 磁盘维护,以及 mdm、filevault、keychain 企业运维;指南分支提供 macOS 学习路径、心智模型与 Linux↔macOS 对照。
  • Vim 系列:vim-basics、vim-advanced、vim-config-plugins、vim-vs-neovim,并扩写了 vim-cheatsheet 与 linux/vi。
  • 快捷键:Windows、macOS、Linux 桌面、终端、浏览器、VS Code 七页,加上指南分支的三件套总表和 Office 分支的 Word、PowerPoint、Excel 专题页,统一按场景表格组织,标注平台差异与容易误按的组合。

所有新页都补了 3 道「读完自测」,并自动进入 /review.html 题库。

贪吃蛇小游戏

首页首屏“小彩蛋”行有一个「🎮 贪吃蛇」入口,页面在 /snake.html。与俄罗斯方块同为站内的非命令页: 不套顶栏与搜索框,由 template/snake.ejs + assets/js/snake-core.js(纯逻辑)+ assets/js/snake.js(渲染/输入)组成,随 npm run build 一起产出。

按键:方向键控制,回车确认(开始 / 继续 / 再来一局),空格返回上一级 (未开始与结束界面直接回首页,游戏中则暂停)。触屏设备会显示四个方向按钮。

俄罗斯方块小游戏

首页首屏“小彩蛋”行另一个入口「🧱 俄罗斯方块」,页面在 /tetris.html。与贪吃蛇同构: template/tetris.ejs + assets/js/tetris-core.js(纯逻辑)+ assets/js/tetris.js(渲染/输入)。

按键:←→ 移动(按住连发)、↑/X 顺时针、Z 逆时针、按住 ↓ 软降、回车 硬降、 C 暂存、空格 暂停或返回(与贪吃蛇一致)。触屏底部五个按钮,▼ 轻点软降一格、 长按 0.25 秒硬降。

规则:7-bag 随机、SRS 踢墙、500ms 锁定延迟、幽灵落点、下一块预览、暂存(每块限一次)、 消行闪烁;单/双/三/四行计 100/300/500/800 分 × 等级,每 10 行升级。

两个游戏页都是 ES module,必须经 HTTP 打开 —— 直接双击 build/*.html(file://)不会运行。 本地预览用 npx serve build 或 python3 -m http.server -d build 8000。

npm test 跑游戏核心逻辑与构建辅助函数的单测(需要 Node ≥ 22)。

新增一个命令页

在对应分支目录下新建 command/<分支>/<slug>.md,格式:

<slug>
===

一行中文描述

## 补充说明

**<slug>命令** 是……

### 语法

```shell
命令示例

注意

  1. ……

相关命令

  • 其他命令 — 说明

参考链接


页面有两种写法,按分支沿用现有风格:

- **Linux(紧凑速查)**:描述之后写 `## 补充说明`,示例用 `### 常用示例`,坑点用 `## 易错点与排错`。存量页多在 20–120 行(中位约 56 行),不强制完整四段式。
- **Kubernetes(完整条目)**:180–280 行(中位约 244 行),包含 `## 补充说明`、`### 语法`、`### 注意`、`### 相关命令`、`### 参考链接`。

**两条硬性规则(两种写法都适用):**

1. **第一行必须与文件名(去掉 `.md`)完全一致。** 产物文件名取标题,而链接取文件名 —— 二者不一致必然 404。构建会拦截并报错。
2. **文件名必须是 ASCII slug**(`pod`、`kube-proxy`),不能有空格或中文。中文只能出现在描述与正文里。

描述取自 `===` 之后、第一个 `##` 之前的内容,进搜索索引。

## 新增一个分支

1. 建目录 `command/<分支id>/`,放入 `.md`
2. 在 `branches.json` 的 `branches` 数组里加一条:

```json
{
  "id": "docker",
  "name": "Docker",
  "desc": "容器运行时与镜像管理",
  "searchPlaceholder": "搜索 Docker 命令",
  "default": false
}
  1. npm run build

分支标签自动出现在首页与所有内页顶栏,搜索索引、总览页分组、计数全部自动更新。无需改动任何代码。

id 必须与目录名一致。"default": true 只能有一个。可选字段:seo.label / seo.intro(分支页标题与介绍,{n} 会替换为条目数)、content: true(按内容页生成标题,不套用“命令详解”)、unit(页脚量词)、learningPath(分支页的学习路径入口)。首页热门命令在 site.hotCommands 中维护。

校验与发布

npm run validate       # 命名与结构校验
npm run content-report # 内容质量与覆盖率报告
npm run content-graph  # 编辑性入链与孤立页报告
npm run check-links    # 产物内链完整性(零 404)
npm run check-external # 参考链接章节的外部 URL 可用性(可选 --strict)
npm run freshness      # 版本敏感页与已登记页的最后核对日期
npm run quiz-audit     # 自测题质量(答案过短、缺少原因的是非题)
npm run verify         # validate + build + check-links
npm run package        # verify + 暂存 public/ + 打包 public.zip(可直接上传)

npm run package 产出的 public.zip 与 build/ 逐字节一致 —— 打包用系统 zip 并排除 __MACOSX/.DS_Store(Linux/Windows 解包不会多出一堆 ._*), 完成后还会自检条目数与解压体积。public/ 与 public.zip 均为本地暂存产物, 每次发布重新生成。

npm run freshness 默认扫描 AI、Kubernetes、中间件三个分支中的版本敏感页,以及所有分支中已登记到 assets/data/content-freshness.json 的页面;登记即检查,不再依赖版本号正则是否命中。它列出未登记与超过 180 天的页面;--all 扫描全部分支,--strict 在有未登记/过期页面时返回非零退出码。完成一次审计后,把对应页面路径与日期写进登记表即可。

npm run content-graph 统计 Markdown 中指向站内页面的编辑性入链,默认列出 ≤1 条入链的页面、零入链页和分支汇总;--branch=guide --max=1 可只看指南分支。仓库同时提供每月自动执行的外链巡检工作流(.github/workflows/external-links.yml),报告保留 90 天。

npm run check-external 只读取 Markdown 的 ## 参考链接 章节,HEAD 失败时回退 GET,并对同一 URL 去重。它默认只报告不阻断;需要让 CI 失败时加 --strict,可用 --limit、--timeout、--concurrency、--retry 控制检查规模;assets/data/external-link-allowlist.json 的 host 仅对 403/429 生效,--no-allowlist 可关闭。2026-10-25 首轮清理将 Linux 的 67 个 URL 替换为可用官方页面、删除 17 个无可靠替代的死链;非 Linux 分支替换 35 个、删除 19 个,另有 2 个确认已恢复;二次复检又清理 19 个 404,403/超时按 host 汇总在 docs/external-link-audit-2026-10-25.md。

SEO 产物

构建会自动产出:

  • robots.txt:允许抓取,并指向 https://www.dos2unix.cn/sitemap.xml
  • sitemap.xml:首页、分支页、hot.html、diagnose.html、分类页与全部命令页(2,212 条)
  • 每页独立的 <title> / meta description / canonical / Open Graph
  • 详情页 JSON-LD:BreadcrumbList + FAQPage;Lab 页额外输出 HowTo
  • 404.html:托管平台若默认读取根目录 404 页面,可直接生效(不需要 nginx)

标题与描述的文本处理在 scripts/lib/seo.mjs,页面级参数在 scripts/build.mjs 的渲染段集中生成,不再使用模板拼接。 list.html、snake.html、tetris.html、404.html 均为 noindex,follow。

当前构建规模:2,217 个 HTML、2,100 个内容页、sitemap 2,212 条、站内链接 86,262 条(校验零 404)。

二级分类(Linux / Windows / macOS / Kubernetes / DevOps / 排障 / 指南 / 中间件 / 教程 / AI 与 MLOps / Office)

command/<branch>/categories.json 定义分支的二级分类:

  • categories: 分类 id、名称、顺序、短描述 desc、长描述 longDesc
  • assignments: 每个页面 slug → 分类 id

当前有十一份:

  • command/linux/categories.json:16 个分类、862 条
  • command/windows/categories.json:6 个分类、93 条
  • command/macos/categories.json:5 个分类、61 条
  • command/k8s/categories.json:12 个分类、274 条
  • command/devops/categories.json:10 个分类、97 条
  • command/troubleshoot/categories.json:10 个分类、170 条
  • command/guide/categories.json:12 个分类、201 条
  • command/middleware/categories.json:11 个分类、71 条
  • command/tutorial/categories.json:3 个分类、90 条
  • command/ai/categories.json:7 个分类、146 条
  • command/office/categories.json:6 个分类、35 条

构建时会校验:

  • 每个 command/<branch>/*.md 必须出现在 assignments 里
  • assignments 里的 slug 必须有对应页面
  • 每个分类至少有 1 个页面

分类页自动生成到 /<branch>/category/<id>/,并加入 sitemap.xml(priority 0.7)。

新增页面时,先在对应 categories.json 的 assignments 里归类,否则构建失败。

百度主动推送

npm run build              # 先生成 sitemap.xml
npm run baidu:push         # 默认推送 www 域名,最多 100 条新增/变更
npm run baidu:push -- --limit=50
npm run baidu:push -- --all
npm run baidu:push -- --site=dos2unix.cn   # 推送裸域版本
npm run baidu:push -- --dry-run

Token 读取顺序:--token= > BAIDU_TOKEN 环境变量 > .baidu-token 文件(gitignore)。 已推送状态记录在 deploy/baidu-pushed.json,只有内容变化才会再次推送。 先部署新版本,再执行推送——否则百度抓到的是旧页面。

访问统计

首页底部的「今日访问 / 近 7 天」数据完全自建,不接第三方:

  • assets/js/visits.js 在页面加载时 POST 到本站 /api/visit.php;首页把返回的今日 PV/UV 和近 7 天数据渲染成迷你柱状图。
  • server/visit.php 是单文件 PHP 接口,支持 SQLite(默认)和 MySQL 5.7+;虚拟主机用 MySQL,独立服务器可用 SQLite。
  • 只存聚合计数和按天加盐的访客哈希,不存原始 IP、UA、URL;不使用 Cookie。
  • 已知爬虫 UA、空 UA 不计;DNT=1 的访客不计数,但仍通过 GET /api/visit.php?stats=1 只读显示聚合数据;预渲染页在激活后再决定上报或只读。
  • 所有部署(GitHub Pages、任意域名)统一请求主站 https://www.dos2unix.cn/api/visit.php;只读展示对所有域名开放(CORS *),写接口(POST)只允许 config.php 的 allowed_origins 白名单。
  • config.php 配置 secret 后,访客/IP 哈希改用 HMAC;数据库被拖走也无法直接枚举 IP。
  • PV = 页面加载次数;UV = 当日去重访客(优先 localStorage 随机 ID,存不下时回退 IP 哈希)。UV 明细约保留 180 天(低频清理),PV 长期保留。
  • 接口内置 PHP 限流(默认每 IP 每分钟 120 次,rate_limit 可调/关闭),不需要 nginx limit_req 也能防基本刷量。

虚拟主机(MySQL)

适用于只有 FTP/面板、没有 nginx 配置和 shell 的虚拟主机。要求 PHP 7.4+(推荐 8.x)、pdo_mysql、MySQL 5.7+。

  1. 上传接口和配置模板到网站根目录的 api/:

    htdocs/api/visit.php          ← server/visit.php
    htdocs/api/config.php         ← 由 server/config.sample.php 复制后填写
    htdocs/api/schema.sql         ← 可选,数据库用户没有 CREATE 权限时导入
    
  2. 在面板「数据库信息」里找到 MySQL 主机、库名、用户名、密码,填进 config.php 的 dsn / user / pass;再加一行 secret(用 openssl rand -hex 32 生成)。密码和 secret 只放服务器上,不要提交到仓库。

  3. 数据库用户通常已有本库全部权限,接口首次请求会自动建表;如果只有增删改查权限,用 phpMyAdmin 导入 schema.sql。

  4. 不需要改 nginx,也不需要 cron。前端统一请求 https://www.dos2unix.cn/api/visit.php;写接口只允许 config.php 的 allowed_origins 白名单,新增域名在配置里加一行即可,只读展示不受限制。

  5. 验收:

    curl -X POST https://www.dos2unix.cn/api/visit.php \
      -H 'Content-Type: application/json' \
      -H 'User-Agent: Mozilla/5.0' \
      -H 'Origin: https://www.dos2unix.cn' \
      -d '{"vid":"manual-test-1234"}'
  • 主机前面若有共享代理/WAF,所有访客可能共用出口 IP;如果发现限流误伤,把 config.php 的 rate_limit 调大或设为 0。
  • allowed_origins 默认包含 www、裸域和 GitHub Pages;新增域名在 config.php 里加一行。未列入的 Origin 写请求返回 403,但只读展示仍然可用。

独立服务器(SQLite)

需要 PHP 8+、pdo_sqlite 和 PHP-FPM。接口放在 webroot 外,静态站发版不会覆盖它:

# 1. 建目录并上传接口(路径按实际面板调整)
mkdir -p /www/wwwroot/dos2unix.cn-api/data
scp server/visit.php root@<server>:/www/wwwroot/dos2unix.cn-api/visit.php
chown -R www:www /www/wwwroot/dos2unix.cn-api
chmod 750 /www/wwwroot/dos2unix.cn-api/data
# 2. http 块:按 IP 限流(可选;PHP 内置限流也会生效)
limit_req_zone $binary_remote_addr zone=visits:10m rate=5r/s;

# 3. 站点配置:把 /api/visit.php 映射到 webroot 外的 PHP 文件
location = /api/visit.php {
    limit_req zone=visits burst=10 nodelay;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /www/wwwroot/dos2unix.cn-api/visit.php;
    fastcgi_param SCRIPT_NAME /api/visit.php;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;   # 按实际 socket 或 127.0.0.1:9000 改
}
  • 若面板启用了 open_basedir,把 /www/wwwroot/dos2unix.cn-api/ 加进去;否则 PHP 读不到 webroot 外的文件。

  • SQLite 位置可用 VISITS_DB 环境变量覆盖;目录需要 PHP-FPM 用户可写。

  • 接口首次请求会自动建表;建议每天备份一次:

    sqlite3 /www/wwwroot/dos2unix.cn-api/data/visits.sqlite \
      ".backup '/www/backup/visits-$(date +%F).sqlite'"

    保留最近 14 天即可。

  • 静态站按原流程发版;server/visit.php 有改动时单独上传,不会随 npm run package 走。

验收

虚拟主机和独立服务器都用同一个路径 /api/visit.php。上面的 curl 应返回 {"today":{"pv":...,"uv":...},"days":[...],"updated":"HH:MM"}。打开首页滚到底部,应看到统计条;接口失败时区块保持隐藏。

只读接口(DNT 前端使用,不计数):

curl 'https://www.dos2unix.cn/api/visit.php?stats=1'

跨域预检(GitHub Pages 在白名单内,应返回 204 且 Access-Control-Allow-Origin 回显该 Origin):

curl -i -X OPTIONS https://www.dos2unix.cn/api/visit.php \
  -H 'Origin: https://dos2un1x.github.io' \
  -H 'Access-Control-Request-Method: POST' \
  -H 'Access-Control-Request-Headers: content-type'

非白名单 Origin 应返回 403,且不带 CORS 头:

curl -i -X OPTIONS https://www.dos2unix.cn/api/visit.php \
  -H 'Origin: https://evil.example' \
  -H 'Access-Control-Request-Method: POST' \
  -H 'Access-Control-Request-Headers: content-type'

测试

npm test                     # 纯逻辑单测;接口集成测试默认跳过
docker build -f test/php-mysql.Dockerfile -t command-hub-php-mysql:8.3 .
npm run test:visits-api      # SQLite + MySQL 5.7 两套 Docker 集成测试

公开写接口无法彻底防刷,allowed_origins 只拦浏览器跨站写(curl/爬虫可伪造 Origin);PHP 限流 / nginx limit_req 仍是主要防线。如果数字可信度要求很高,可以改用 nginx access.log 口径(直接从服务端日志聚合),代价是数据有 10 分钟延迟。

架构说明

js/dt.js 里的每条记录形如:

{"n":"helm","p":"/linux/helm","d":"Kubernetes包管理器","b":"linux"}

p 是完整路径(含分支),因此链接拼接是 ${站点根}${p}.html。这也是构建脚本能直接从 p 反推源文件路径(command/linux/helm.md)的原因。

内容覆盖

分支 页面 说明
Linux 862 基础命令集 + 现代 CLI/诊断/开发/网络/备份/密钥/数据/系统工具,数据库客户端与语言运行时,Git 进阶与数据库服务端运维,存储/网络/终端效率/主机安全,LUKS/DRBD/GlusterFS 与 Doris/StarRocks/Druid/Pinot,OpenSCAP/SSSD/PAM/Firejail/TargetCLI/NBD/BIRD/StrongSwan 与 ripgrep/btop,以及 bcc-tools/火焰图/namespace/cgroup v2/page cache/IO 调度/网络栈/内存回收/eBPF 探针/sysdig 等性能与 eBPF 工具
Windows 93 CMD 文件/系统/网络命令、21 个 PowerShell 核心 cmdlet、WSL 与 wslconfig、Windows Server/AD 的 dcdiag/repadmin/dsquery/diskpart/wbadmin 等诊断与运维命令,以及 WinRM、GPO 诊断、AD 复制排障和 Defender/Intune 策略排查
macOS 61 BSD 文件命令、launchctl/pmset/softwareupdate/tmutil/csrutil 等系统命令、ifconfig/tcpdump/dscacheutil 等网络工具、Xcode 命令行工具与 Homebrew、diskutil/hdiutil 磁盘维护,以及 MDM、FileVault 与钥匙串管理
DevOps 97 GitHub Actions、GitLab CI、Jenkins、Buildkite、发布自动化、云 CLI、Terraform/OpenTofu/Pulumi/Ansible、Helmfile/cdk8s、ORAS/SLSA/in-toto、tfsec/KICS/TFLint/Terrascan、Atlantis/Infracost/Backstage,以及 SLO/错误预算、事故指挥/复盘、容量预测、FinOps、IDP、策略即代码、混沌工程、渐进式发布、多集群、DR 演练、on-call/runbook/toil 等 SRE 与平台工程实践
排障 170 按报错/现象组织:系统、磁盘、网络、权限证书、JVM/Go/Node、etcd/APIServer/CNI/CSI、Nginx、MySQL/PostgreSQL、Redis/Kafka/RabbitMQ、K8s 控制面与中间件连接问题,以及 Python/Ruby/PHP 运行时、MongoDB/ClickHouse/Pulsar、IPv6/gRPC/WebSocket/DNS ndots/TCP 状态等运行时与数据排障
指南 201 工具对比、速查表、路线图/检查清单、学习路径与心智模型、Windows 系统操作、PowerShell 概念、Vim 系列、快捷键与跨平台对照,以及恢复 Runbook、公开事故复盘、复盘索引、技术选型决策地图、速查表索引、快捷键总览和平台生命周期矩阵;学习路径覆盖 12 条领域路径、4 条岗位路径和 12 个心智模型,并串联教程分支的 35 个故障演练,覆盖选型、上线检查、性能排查、可观测性、容器安全、CI/CD 成熟度、SRE 值班、迁移、成本、事故响应、AI 基础设施、RAG 与 GPU 集群
中间件 71 Elasticsearch/OpenSearch/Logstash/Kibana/Filebeat/Vector、Kafka/ZooKeeper/Schema Registry/ksqlDB/RabbitMQ、Nginx/HAProxy/Keepalived/Keycloak、Nexus/JFrog、PostgreSQL/PgBouncer/ProxySQL/MySQL Router,以及 MQTT、Nacos/Apollo、Temporal/Airflow、Qdrant/Milvus、Valkey/KeyDB,以及 RocketMQ/Dubbo/ShardingSphere/Seata/Canal/Arthas 等 Java 生态中间件
教程 90 迁移与升级(MySQL→PostgreSQL、Elasticsearch→OpenSearch、Prometheus→VictoriaMetrics、VM/Compose→Kubernetes 等)、搭建实战(Argo Workflows、Tekton、Flux、Gatekeeper、Falco、OpenBao、Temporal、Airflow、ClickHouse、StarRocks、MinIO、Ceph 等),以及 35 个本地故障演练(磁盘满/inode/CPU/网络/K8s/MySQL/PostgreSQL/Kafka/Redis/OOM/镜像/证书/Helm/etcd/K8s 升级/数据库切换/区域故障等)
AI 与 MLOps 146 GPU 监控与容器运行时、CUDA/NCCL、Ollama/vLLM/SGLang/TGI/TensorRT-LLM 推理、torchrun/DeepSpeed/Ray/Megatron 训练、PEFT/TRL/Axolotl/Unsloth 微调、LangChain/LlamaIndex/RAGFlow/Dify 应用、MLflow/DVC/W&B/Langfuse 实验与可观测性,以及 Ragas/DeepEval/Guardrails/Llama Guard/promptfoo/Inspect AI/garak/LangSmith 评估与红队、LangGraph/CrewAI/AutoGen/MCP/DSPy/Pydantic AI/smolagents/OpenAI Agents SDK/A2A Agent、GraphRAG/reranker/Milvus 运维、推理调优/量化/投机解码、Weaviate/Chroma 运维、Triton/Ray Serve/Slurm/模型注册,以及 GPU Xid、NCCL 卡死、vLLM OOM、模型加载失败、推理延迟、Ray 调度、训练 loss 异常、checkpoint 损坏、分布式训练卡死、GPU 节点生命周期、RAG 召回质量、embedding 迁移、Agent 运行时观测和推理自动扩缩容等运行态排障
Office 35 Excel 快捷键、单元格与填充、排序筛选、条件格式、数据验证、冻结打印、图表;SUMIFS/IF/VLOOKUP/XLOOKUP/INDEX-MATCH/COUNTIFS/文本/日期函数;透视表、动态数组、Power Query;录制宏、VBA 语法、Range/Cells、循环、工作簿与错误处理;Word 快捷键、样式、目录、分节页眉、邮件合并、修订、域与通配符替换;PowerPoint 快捷键、母版与版式

Kubernetes 分支按方向划分:

集群与节点   kubeadm kubelet kube-proxy kube-apiserver etcd crictl ctr kubeconfig node ...
调度与资源   kube-scheduler affinity taints-tolerations priority-class poddisruptionbudget
             topology-spread resource-quota limitrange qos descheduler cluster-autoscaler vpa
工作负载     pod deployment statefulset daemonset job cronjob replicaset hpa
网络         service ingress networkpolicy coredns cni calico cilium flannel metallb multus ...
配置与存储   configmap secret pvc pv storageclass namespace csi longhorn rook ceph ...
安全         rbac serviceaccount pod-security-admission securitycontext admission-webhook
             opa gatekeeper kyverno falco trivy cosign sealed-secrets cert-manager vault ...
可观测性     prometheus alertmanager grafana loki fluent-bit jaeger opentelemetry thanos ...
CI/CD        argocd flux jenkins tekton argo-workflows argo-rollouts keda knative ...
服务网格     istio linkerd envoy kiali gateway-api contour traefik apisix kong nginx-ingress ...
Operator     crd operator kubebuilder operator-sdk olm controller-runtime aggregated-apiserver
发行版       k3s k0s talos microk8s k3d minikube kind kubeone rancher karmada kubevela openshift
中间件       postgres-operator mysql-operator redis-operator strimzi elastic-operator ...
运维工具     k9s kustomize velero metrics-server kube-bench kube-state-metrics chaos-mesh ...
现代平台     crossplane karpenter tetragon kubewarden kueue yunikorn
             envoy-gateway kgateway clusternet juicefs piraeus
             external-secrets sops kube-burner kwok kube-ovn
调试与成本   kubectx kubectl-tree kubectl-cost rbac-police

DevOps 分支按方向划分:

持续集成与交付   github-actions gitlab-ci jenkins gitlab-runner act drone buildkite-agent
                 buildkite circleci concourse dagger woodpecker gitea-actions tkn backstage
发布自动化       semantic-release release-please goreleaser renovate dependabot
代码质量         pre-commit lefthook commitlint ansible-lint molecule
云厂商 CLI       aws gcloud gsutil bq az aliyun doctl hcloud openstack oci
基础设施即代码   terraform opentofu terragrunt pulumi ansible-playbook ansible-vault
                 ansible-galaxy packer vagrant nomad helmfile cdk8s atlantis infracost tflint
容器与镜像       docker-compose docker-buildx buildctl crane regctl dive oras
安全与供应链     grype syft hadolint gitleaks semgrep tfsec kics terrascan
                 slsa-verifier in-toto
可观测性         promtool amtool logcli otel-cli
消息系统         kafka-topics nats pulsar

排障分支按故障域划分:

系统与进程       oom-killed too-many-open-files cpu-100 load-average-high
                 zombie-process process-stuck memory-leak boot-failure
                 jvm-gc-overhead metaspace-oom thread-deadlock goroutine-leak
                 node-heap-oom event-loop-blocked hung-task time-drift
磁盘与文件系统   no-space-left inode-exhausted read-only-filesystem disk-io-high
                 fsck-failed mount-failed disk-readonly
网络与 DNS       connection-refused connection-timeout dns-resolution-failed port-in-use
                 502-bad-gateway 504-gateway-timeout tls-handshake-failed packet-loss
                 mtu-blackhole nat-port-exhausted
权限与证书       permission-denied sudo-failed selinux-denied certificate-expired
                 certificate-untrusted ssh-permission-denied
Kubernetes       crashloopbackoff imagepullbackoff pod-pending pod-evicted probe-failed
                 node-notready k8s-dns-failed k8s-pvc-pending etcd-slow apiserver-429
                 kubelet-not-ready cni-plugin-failed csi-mount-failed terminating-stuck
服务与中间件     redis-connection-failed mysql-connection-failed postgres-connection-failed
                 kafka-consumer-lag postgres-lock-wait postgres-connection-exhausted
                 redis-hotkey elasticsearch-yellow rabbitmq-queue-backlog

指南分支共 12 个分类、201 页。下面按用途列出主要学习内容(42 个工具对比与替代、44 个速查/矩阵/索引页、15 个路线图/检查清单、30 个学习路径与心智模型、6 个术语与索引页):

工具对比   ansible-vs-puppet ansible-vs-terraform argocd-vs-flux
           btrfs-vs-zfs cgroup-v1-vs-v2 containerd-vs-cri-o curl-vs-wget
           docker-vs-podman envoy-vs-nginx ext4-vs-xfs grafana-vs-kibana
           grpc-vs-rest haproxy-vs-nginx helm-vs-kustomize
           iptables-vs-nftables kafka-vs-pulsar kafka-vs-rabbitmq
           loki-vs-elk mysql-vs-mariadb nats-vs-kafka nats-vs-rabbitmq
           nginx-vs-caddy podman-vs-containerd postgres-vs-mongodb
           prometheus-vs-victoriametrics prometheus-vs-zabbix psql-vs-mysql
           redis-vs-memcached systemd-vs-sysvinit
           terraform-vs-cloudformation traefik-vs-nginx ollama-vs-vllm
           vllm-vs-sglang qdrant-vs-milvus emqx-vs-mosquitto
           temporal-vs-airflow valkey-vs-redis crossplane-vs-terraform
           karpenter-vs-cluster-autoscaler envoy-gateway-vs-nginx-ingress
           pgvector-vs-qdrant deprecated-commands
速查与矩阵 ansible-cheatsheet awk-cheatsheet bash-cheatsheet
           curl-cheatsheet docker-cheatsheet find-cheatsheet git-cheatsheet
           grep-cheatsheet jq-cheatsheet k8s-troubleshooting-cheatsheet
           kafka-cheatsheet kubectl-cheatsheet linux-permission-cheatsheet
           logql-cheatsheet mysql-cheatsheet
           network-troubleshooting-cheatsheet nginx-cheatsheet
           openssl-cheatsheet postgres-cheatsheet promql-cheatsheet
           redis-cheatsheet sed-cheatsheet ssh-cheatsheet
           systemd-cheatsheet tcpdump-cheatsheet terraform-cheatsheet
           tmux-cheatsheet yq-cheatsheet helm-cheatsheet
           kustomize-cheatsheet dockerfile-cheatsheet argocd-cheatsheet
           gpu-cheatsheet kubectl-jsonpath-cheatsheet
           linux-signal-cheatsheet http-status-cheatsheet dns-cheatsheet
           tls-cheatsheet k8s-rbac-cheatsheet cron-cheatsheet
           regex-cheatsheet version-eol-matrix platform-lifecycle-matrix
           cheatsheet-index
路线图     k8s-production-checklist linux-performance-triage
           observability-roadmap database-selection-roadmap
           container-security-checklist cicd-maturity-roadmap
           sre-oncall-checklist migration-readiness-checklist
           cost-optimization-checklist incident-response-playbook
           ai-infra-roadmap rag-production-checklist gpu-cluster-checklist
           platform-engineering-roadmap k8s-upgrade-checklist
学习路径   k8s-learning-path linux-learning-path devops-learning-path
           troubleshoot-learning-path middleware-learning-path
           ai-learning-path security-learning-path
           observability-learning-path database-learning-path
           network-learning-path lab-learning-path learning-paths
           windows-learning-path macos-learning-path role-sre-onboarding
           role-backend-oncall role-data-platform role-ai-infra-oncall
心智模型   linux-mental-model k8s-mental-model devops-mental-model
           troubleshoot-mental-model middleware-mental-model ai-mental-model
           security-mental-model observability-mental-model
           database-mental-model network-mental-model windows-mental-model
           macos-mental-model
术语与索引 build-index migration-index error-code-index linux-command-map
           linux-long-tail-index glossary-index

另有五个入口页:technology-selection-map 用七条决策树把 42 篇工具对比与替代页分流,public-postmortem-index 按根因把 12 篇公开复盘和 12 篇 Runbook 串起来,cheatsheet-index 汇总 42 张速查表,shortcuts-overview 汇总 7 个平台的快捷键页,glossary-index 汇总 122 条术语与缩写。

中间件分支按服务划分:

日志与搜索     elasticsearch opensearch logstash kibana filebeat vector
消息与协调     kafka kafka-broker zookeeper schema-registry ksql rabbitmq
               kafka-connect mirrormaker debezium redpanda
网关与接入     nginx haproxy keepalived keycloak oauth2-proxy
               varnish openresty
物联网消息     emqx mosquitto vernemq nanomq
配置中心       nacos apollo
工作流与调度   temporal airflow prefect dagster
制品与仓库     nexus jfrog
数据与连接池   postgresql pgbouncer proxysql mysql-router
高可用与备份   patroni orchestrator redis-cluster mongodb-replica-set mysql-shell
               elasticsearch-cluster clickhouse-keeper tempo opensearch-dashboards
               pgbackrest wal-g percona-xtrabackup
缓存与云托管   memcached mongodb-atlas valkey keydb dragonfly garnet
向量检索       qdrant milvus weaviate chroma pgvector
全文搜索       meilisearch typesense solr
Java 生态      rocketmq dubbo shardingsphere seata canal arthas

教程分支分三类:

迁移与升级   migrate-docker-to-containerd migrate-iptables-to-nftables
             migrate-cgroup-v1-to-v2 migrate-mysql57-to-mysql8
             migrate-postgresql-major-version migrate-nginx-to-caddy
             migrate-helm-to-kustomize migrate-jenkins-to-github-actions
             migrate-elk-to-loki migrate-redis-to-valkey
             migrate-ingress-nginx-to-gateway-api migrate-mysql-to-postgresql
             migrate-elasticsearch-to-opensearch migrate-prometheus-to-victoriametrics
             migrate-nginx-ingress-to-traefik migrate-jenkins-to-gitlab-ci
             migrate-helm-to-argo-cd migrate-vm-to-kubernetes
             migrate-docker-compose-to-k8s
搭建与实战   build-k8s-cluster build-kafka-cluster build-postgresql-ha
             build-redis-cluster build-observability-stack build-cicd-pipeline
             build-argocd-gitops build-istio-mesh build-velero-backup
             build-vault build-keycloak-sso build-harbor build-prometheus-ha
             build-loki-ha build-cert-manager build-external-dns
             build-sealed-secrets build-argo-rollouts build-kyverno-policies
             build-cilium-network build-postgresql-pitr build-mysql-ha
             build-mongodb-replica-set build-kafka-connect build-argo-workflows
             build-tekton build-flux build-gatekeeper build-falco build-openbao
             build-temporal build-airflow build-clickhouse build-starrocks
             build-minio build-ceph
故障演练     lab-disk-full lab-inode-exhausted lab-cpu-100 lab-network-latency
             lab-pod-pending lab-crashloopbackoff lab-dns-failure lab-pvc-pending
             lab-mysql-deadlock lab-postgres-connection-exhausted
             lab-kafka-consumer-lag lab-redis-hotkey lab-oom-killed
             lab-imagepullbackoff lab-node-notready lab-certificate-expired
             lab-nginx-502 lab-helm-failed lab-kafka-rebalance
             lab-es-unassigned lab-etcd-quorum lab-mysql-replication-lag
             lab-k8s-upgrade lab-cert-rotation lab-db-failover lab-etcd-restore
             lab-regional-failure lab-redis-failover lab-kafka-broker-replace
             lab-backup-restore-verification lab-velero-restore lab-postgres-pitr
             lab-kafka-restore lab-es-restore lab-dns-failover

AI 与 MLOps 分支按方向划分:

GPU 与加速   nvidia-smi nvitop nvtop cuda nccl dcgm-exporter
             nvidia-container-toolkit hami gpu-burn bitsandbytes flash-attn transformers
             slurm gpu-xid nccl-hang gpu-node-lifecycle
推理与服务   ollama vllm sglang llama-server triton huggingface-cli
             tgi lmdeploy xinference openllm tensorrt-llm gpustack
             triton-inference-server ray-serve bentoml
             vllm-oom model-load-failed inference-latency
推理优化     vllm-tuning quantization speculative-decoding
训练与编排   torchrun deepspeed accelerate ray kubeflow llama-factory
             peft trl axolotl unsloth megatron-lm optuna ray-scheduling
             training-loss-anomaly checkpoint-corruption distributed-training-hang
             rag-retrieval-quality-incident embedding-model-migration
             agent-runtime-observability inference-autoscaling
RAG 与应用   langchain llamaindex ragflow dify fastgpt docling
RAG 运维     weaviate-ops chroma-ops milvus-ops graphrag reranker
评估与安全   ragas deepeval guardrails-ai llama-guard promptfoo
             inspect-ai garak langsmith
Agent 与编排 langgraph crewai autogen mcp dspy pydantic-ai
             smolagents openai-agents-sdk a2a
实验与数据   mlflow dvc wandb tensorboard label-studio lm-eval
             langfuse phoenix evidently clearml comet neptune model-registry

Office 分支按方向划分:

Excel 基础    excel-basics excel-shortcuts excel-sort-filter
              excel-conditional-formatting excel-data-validation
              excel-freeze-print excel-charts
Excel 函数    excel-functions excel-sumifs excel-if excel-vlookup
              excel-xlookup excel-index-match excel-countifs
              excel-text-functions excel-date-functions
数据分析      excel-pivot-table excel-dynamic-arrays excel-power-query
宏与 VBA      excel-macro-recording vba-basics vba-range-cells
              vba-loops vba-workbook vba-error-handling
Word          word-shortcuts word-styles word-toc word-page-setup
              word-mail-merge word-track-changes word-fields word-find-replace
PowerPoint    ppt-shortcuts ppt-master-slides

Office 页面按“适用场景 → 核心操作/语法 → 示例 → 易错点 → 相关条目 → 参考链接 → 读完自测”组织,并在涉及版本差异时标注 Excel 365/2021/2019、Word 与 PowerPoint 的桌面版/网页版边界。Excel 函数页统一说明错误值、引用方式和版本兼容;VBA 页默认使用 .xlsm,并强调宏安全、状态恢复与回滚。

其中 ecosystem-status 是一页专门的生态状态汇总:已退役/已归档的项目(含时间点与替代方案)、发生重大变更的项目(如 kube-proxy 的 IPVS 模式废弃、containerd 2.x 配置格式变更)、以及已从 CNCF 毕业的项目。写内容时如引用第三方工具,建议先对照该页确认其是否仍在维护。

2026-10 做过一次版本巡检,更新了 15 个高频页的版本号、安装清单和废弃声明(Kubernetes 1.37、Helm 3.22/4.3、Argo CD 3.5、KEDA 2.21、Karpenter 1.15、etcd 3.7、Kafka 4.x KRaft、RabbitMQ 4.x quorum 队列等),并在 ecosystem-status 增加了带日期的版本矩阵。版本会继续变化,升级前以官方 release notes 为准。

各页面的 ### 注意 小节记录的是经核实的真实坑点与常见误传的纠正,而非泛泛的最佳实践。

内容与许可

本站内容(除另有标注外)采用 LICENSE 的 MIT 许可,Copyright © 2026 dos2un1x。

全站 2100 页,按 11 个分支、98 个分类组织:

  • Linux:862 页
  • Windows:93 页
  • macOS:61 页
  • Kubernetes:274 页
  • DevOps:97 页
  • 排障:170 页
  • 指南:201 页
  • 中间件:71 页
  • 教程:90 页
  • AI 与 MLOps:146 页
  • Office:35 页

引用第三方工具或文档时,页面内保留官方来源链接;正文、示例取舍与排错说明由本站组织。分发或复用内容时请保留 LICENSE。

联系与支持

扫码添加微信、加入交流群,或赞赏支持。

需要 command 私有子模块权限以完整构建?请扫码添加作者微信或加入交流群,并附上你的 GitHub 账号与用途。

加我微信 加入交流群 赞赏支持
dos2unix 微信二维码 command-hub 微信交流群二维码 dos2unix 赞赏码
扫码添加作者微信 扫码加入交流群(7 天内有效) 扫码赞赏支持

About

Linux / Windows / macOS / Kubernetes / DevOps / 排障 / 指南 / 中间件 / 教程 / AI 与 MLOps 十分支中文命令速查与故障诊断栈。

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages