![systemd 语法变化和差异](https://linux22.com/image/211267/systemd%20%E8%AF%AD%E6%B3%95%E5%8F%98%E5%8C%96%E5%92%8C%E5%B7%AE%E5%BC%82.png)
收到此类错误后:
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
指定在所有情况下都应重新启动。
这里没有监控超时,进程退出时会重新启动。服务可以配置看门狗,但这需要托管服务的配合(它需要定期通知看门狗)。