如果我以类型设置为"分叉"的方式配置 systemd 服务,而 TimeoutStartSec 设置为"无穷大",那么如果配置的服务永远不会进入后台,我的系统启动会阻塞吗?
如果没有,具有这种配置的副作用是什么?
systemd
实现是通过指定依赖项而不是简单的优先级(由两位数定义的顺序,如05-service
和67-daemon
)来替换已经获得并行启动的 SYS-V 。但是 SYS-V 不受任何约束,因此大多数流程都不会真正正确定义。(优先级系统是一个文件名,依赖项在 init 脚本开头的注释中定义)。
systemd
大量借鉴了并行启动的概念,通过实现类似make
机制,你可以说只有在构建 A 后才构建 B。
# Makefile
B: A
generate-B
A: A.c
gcc -o A A.c
systemd
因此,如果您现在创建第二个服务(即B
在我的示例中)依赖于永远不会按预期返回的服务,第二个服务将永远不会启动。即
# Makefile
B: A
generate-B [never reach since A never ends]
A: A.c
sleep forever
换句话说,由于您的操作系统不依赖于您的服务,因此它仍将按预期加载。但是,如果您开始在第一个服务上创建依赖项,您的环境将受到影响。另一方面,可能有各种类型的故障保护可以绕过,至少部分规避您正在谈论的设置类型。