与启动/关闭无关的“OneShot”systemd 服务默认有超时吗?

与启动/关闭无关的“OneShot”systemd 服务默认有超时吗?

与启动/关闭无关的“OneShot”systemd 服务默认有超时吗?

如果是这种情况,如何验证其发行版使用的当前默认值?

答案1

不。 默认情况下type=oneshot,服务不兑现TimeoutStartSec

系统服务(5)

超时开始秒=

配置等待启动的时间。如果守护程序服务未在配置的时间内发出启动完成信号,则该服务将被视为失败并再次关闭。采用以秒为单位的无单位值,或时间跨度值,例如“5min 20s”。传递“无穷大”以禁用超时逻辑。默认为管理器配置文件中的 DefaultTimeoutStartSec=,除非使用 Type=oneshot 时,在这种情况下默认禁用超时(参见 systemd-system.conf(5))。

其原因是...

oneshot 的行为与 simple 类似;然而,预计该进程必须在 systemd 启动后续单元之前退出。 RemainAfterExit= 对于此类服务特别有用。如果未指定 Type= 和 ExecStart=,则这是隐含的默认值。

...这意味着它将执行 oneshote 命令,并且当(如果)进程退出时,如果RemainAfterExit为 true,则服务将被标记为活动状态。如果由于某种原因,进程永远不会退出,那么这可能是一个问题,并导致使用TimeoutStartSec默认情况下遵循的另一种类型,例如type=simple.或者,您可以显式设置TimeoutStartSec服务type=oneshot

相关内容