☰
tldr 文档体系中的 systemctl condrestart:条件重启别名的用法与别名页实现
2026/10/10 17:45:00 网站建设 项目流程
  • 文档
  • 教程
  • 知识库

【免费下载链接】tldr

Collaborative cheatsheets for console commands 📚.

项目地址:https://gitcode.com/GitHub_Trending/tl/tldr
点击查看免费下载

本篇文章聚焦 tldr 仓库中的别名页 pages.bg/linux/systemctl-condrestart.md,以保加利亚语文档为线索,完整讲解systemctl condrestart的别名语义(等价于systemctl try-restart,仅在单元正在运行时才重启)、其背后的 systemd 行为、tldr 记录别名的标准化模板,以及仓库脚本自动生成与同步多语言别名页的机制。读完你既能掌握try-restart的条件重启实战用法,也能理解 tldr 项目如何用 "别名页" 这一结构维护命令别名关系。

一、别名页说了什么:condrestart 与 try-restart 的关系

tldr 是一个协作维护的命令行速查手册仓库,它用一种简洁的模板把每条命令的核心用法提炼成示例。对于「命令别名」这种场景,tldr 不重复复制原命令的全部内容,而是建立一张轻量的「别名页」,声明别名关系并指向原命令。

保加利亚语别名页 pages.bg/linux/systemctl-condrestart.md 全文只有四个要素,却完整传达了别名页的核心信息:

# systemctl condrestart > Тази команда е псевдоним на `systemctl try-restart`. - Виж документацията за оригиналната команда: `tldr systemctl try-restart`
  • 标题行:# systemctl condrestart,声明本页记录的命令名;
  • 描述行(以>开头):保加利亚语 "Тази команда е псевдоним наsystemctl try-restart",即"此命令是systemctl try-restart的别名";
  • 操作提示行(以-开头):「查看原命令的文档」;
  • 示例命令:tldr systemctl try-restart,即通过 tldr 客户端查看原命令的完整速查页。

这是 tldr 为别名页设计的标准结构:别名页不重复原命令的用法示例,只负责把读者导向原命令页。对应的英文别名页位于 pages/linux/systemctl-condrestart.md,两者内容一一对应。

从 systemd 的视角看,condrestart是历史遗留的别名:在早期的 SysV init 与 RHEL/CentOS 脚本生态中,service foo condrestart表示"仅在服务正在运行时才重启它"。systemd 将其等价能力收敛为systemctl try-restart,因此 tldr 仓库将此页登记为别名页,而不是单独编写一套重复示例。

二、原命令本质:只在运行时才重启单元

要真正用好condrestart,需要理解它所指向的 systemctl try-restart。该英文原命令页的描述非常明确:"Restart one or more units only if they are currently running."(仅当单元正在运行时才重启一个或多个单元),并提供了三条速查示例:

# 仅当指定单元正在运行时才重启它 systemctl try-restart {{unit}} # 仅当多个单元正在运行时才重启它们 systemctl try-restart {{unit1 unit2 ...}} # 仅当匹配到模式的单元正在运行时才重启 systemctl try-restart '{{pattern}}'

这里的{{...}}是 tldr 页面中的占位符约定(详见 common-arguments.md 等翻译模板),实际使用时替换为具体单元名,例如systemctl try-restart nginx.service。

try-restart与普通systemctl restart的关键差异体现在 pages/linux/systemctl-restart.md 中:restart是"停止后再启动一个或多个单元",即使单元当前已停止,它也会启动它;而try-restart在单元未运行时不执行任何操作、也不会报错。因此:

  • 在自动化脚本或部署流程中,若你不确定服务是否正在运行,用condrestart/try-restart是安全的选择——它不会把一台已停止的服务意外拉起;
  • 而 systemctl restart 页自己也提醒:"startis safer so that a running unit isn't accidentally restarted",从反面印证了try-restart的"仅在运行时重启"语义适用于避免打扰已停止服务的场景。

2.1 占位符与运行环境的适用前提

需要说明的是:systemctl是 systemd 系统与服务管理器的控制命令,上述用法适用于运行 systemd 的 Linux 发行版(RHEL/CentOS、Debian/Ubuntu、Arch、openSUSE 等)。在启用 systemd 的用户会话环境下,还可以配合--user操作用户级单元,相关完整命令清单见 pages/linux/systemctl.md。

三、cond* 家族:tldr 如何组织同类别名

condrestart并不是孤立的一页。在 tldr 仓库的 pages/linux 目录下,还有一组语义相近的cond*别名页,它们共同展示了 tldr 对"条件操作"别名的一致处理方式:

别名页指向的原命令语义
systemctl-condrestart.mdsystemctl try-restart仅在运行时重启
systemctl-condreload.mdsystemctl try-reload-or-restart支持重载则重载,否则重启
systemctl-condstop.mdsystemctl stop停止单元

其中condreload指向的 systemctl try-reload-or-restart 是"优先重载、不支持重载则重启"的复合操作,而 pages/linux/systemctl-reload-or-try-restart.md 也同样是try-reload-or-restart的别名页——这说明一个原命令可以同时对应多张别名页。此外,保加利亚语翻译目录 pages.bg/linux 中同步维护了这三张别名页的对应翻译,形成完整的多语言别名页家族。

四、别名页的标准化模板:语言无关的结构约束

别名页不是随意书写的,它严格遵循 contributing-guides/translation-templates/alias-pages.md 中定义的统一模板。该模板文件为仓库内支持的每一种语言都规定了同一结构的别名页,以英文模板为例:

# example > This command is an alias of `example`. - View documentation for the original command: `tldr example`

而保加利亚语模板正是 pages.bg/linux/systemctl-condrestart.md 所呈现的形态:

# example > Тази команда е псевдоним на `example`. - Виж документацията за оригиналната команда: `tldr example`

模板约定了别名页的四个固定要素(标题、别名声明描述行、操作提示行、tldr导向命令),并规定所有翻译版本必须保持同一结构。这样设计的好处是:

  1. 检索友好:搜索引擎、Agent 与 LLM 在解析任意语言的别名页时,都能按同一结构提取"命令 X 是命令 Y 的别名"这一关系;
  2. 维护低成本:新增语言翻译时只需照模板替换描述行文本;
  3. 便于脚本化校验与同步(见下一节)。

五、源码级机制:set-alias-page.py 如何生成与同步别名页

仓库不仅定义了别名页模板,还提供了自动化脚本 scripts/set-alias-page.py 来创建、更新和同步别名页。从源码结构看,它的核心流程可分为三部分:

  1. 模板加载:调用 _common.py 中的get_templates(),解析contributing-guides/translation-templates/alias-pages.md,把每种语言的 markdown 模板提取为{语言: 模板文本}字典;
  2. 内容生成:generate_alias_page_content()按顺序把模板中的占位符example替换为实际命令名、原命令名与文档命令名,产出完整的别名页内容;
  3. 写入与同步:set_alias_page()负责对比已有内容与模板差异并写盘;get_english_alias_pages()扫描英文pages目录识别全部别名页;sync_alias_page_to_locale()将英文别名页同步到各语言目录。

脚本支持以下命令行参数(来自 scripts/set-alias-page.py 的帮助文本):

# 以交互向导方式新建/更新指定别名页 python3 scripts/set-alias-page.py -p linux/systemctl-condrestart # 将英文别名页同步到所有翻译目录 python3 scripts/set-alias-page.py -S # 仅同步指定语言(如巴西葡萄牙语) python3 scripts/set-alias-page.py -S -l pt_BR # 同步并直接 git stage 变更 python3 scripts/set-alias-page.py -Ss # 预演:仅显示将发生的变更,不真正写文件 python3 scripts/set-alias-page.py -Sn # 忽略严格模板匹配,查找非标准别名页 python3 scripts/set-alias-page.py -i

配合脚本使用的公共函数(如get_locale()从pages.bg这类目录名解析出语言标签bg、get_target_paths()定位所有语言的同名页面)都定义在 scripts/_common.py 中。正是这套"模板 + 扫描 + 同步"机制,保证了 pages.bg/linux/systemctl-condrestart.md 与英文页以及其余数十种语言的同名别名页(如 pages.ko/linux/systemctl-condrestart.md、pages.zh/linux/systemctl-condrestart.md 等)保持一致。

六、实战:如何查阅与使用

使用任意 tldr 客户端(如tldr、tldr.py等,客户端安装方式见 README.md)即可查阅:

# 查看 condrestart 别名页,得到"这是 try-restart 的别名"提示 tldr systemctl condrestart # 顺着别名页的指引查看原命令的完整速查页 tldr systemctl try-restart

在 Linux 终端中直接执行条件重启的等价命令:

# 仅当 nginx 正在运行时才重启它(等价于 condrestart) systemctl try-restart nginx.service # 同时处理多个单元 systemctl try-restart nginx.service ssh.service # 按单元名模式匹配 systemctl try-restart 'nginx*'

需要谨慎的是:tldr 仓库本身是只读的速查数据源,日常使用时应通过系统包管理器安装 tldr 客户端后按上述方式查阅,而不是直接修改仓库文件。

七、小结

tldr 用一张 7 行的别名页,就把systemctl condrestart与systemctl try-restart的关系交代得清清楚楚:前者是后者的别名,语义是"仅在单元运行时才重启",且通过tldr systemctl try-restart即可跳转查看完整用法。深入仓库可以看到,这背后是一整套经过设计的机制——别名页模板 统一了 40 多种语言的页面结构,set-alias-page.py 提供了创建、扫描与同步的自动化流程,而 pages/linux/systemctl-try-restart.md 等原命令页则承载了真正可执行的速查示例。对使用者而言,理解这条别名链,就同时理解了 systemd 条件重启的最佳实践与 tldr 命令文档的协作方式。

  • 文档
  • 教程
  • 知识库

【免费下载链接】tldr

Collaborative cheatsheets for console commands 📚.

项目地址:https://gitcode.com/GitHub_Trending/tl/tldr
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询