systemd 语法变化和差异

systemd 语法变化和差异

收到此类错误后:

nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: failed (Result: core-dump) since Mon 2022-09-26 22:17:21 UTC; 8h ago
       Docs: man:nginx(8)

尝试监控并在 nginx 失败时重新启动它。然而,不同的来源提出了不同的 syntassi:

Restart=always
Restart=on-failure

的文档定时器或者单位不描述该参数。这也造成了默认计时器是什么以及是否应该专门设置的不确定性。

nginx.service文件已被编辑为包含目录 中的一个,然后是另一个/usr/lib/systemd/system
有趣的是,目录/lib/systemd/system具有相同的文件(并且都没有指示为别名;我假设正在使用目录别名?)并且对一个文件的更改会反映在另一个文件上。
所有更改均由systemctl daemon-reload

该更改没有按预期重新启动 nginx。因此:

  • 这两个 syntassi 有什么区别
  • 如果没有指定,默认应用什么计时器

答案1

所有 systemd 指令都有一个索引man systemd.directives;对于Restart=,这导致man systemd.service

Restart=确定托管服务退出时应发生的情况。on-failure指定如果由于信号或管理操作超时而以非零退出代码退出,则应重新启动它。always指定在所有情况下都应重新启动。

这里没有监控超时,进程退出时会重新启动。服务可以配置看门狗,但这需要托管服务的配合(它需要定期通知看门狗)。

相关内容