如果我在脚本中这样做,状态调用显示“OK”
但是仅仅几毫秒之后,状态是“失败的”。
如何检测启动是否成功?
这里对我来说意味着什么“成功”:服务器开始运行。
系统接缝启动过程,不会等待服务器是否能够正确启动。
示例:服务器的configuration包含语法错误。 服务器将运行几毫秒但终止。
最简单的解决scheme是在我调用“systemctl status foo”之前执行“sleep 1”。
但是这感觉很脏。
也许有一个更好的解决scheme来获得服务器启动后的真实状态。
我只在乎开始。 如果服务器在两个小时后失败,这不是这个问题的一部分。
通常情况下,在启动过程的命令输出中出现failed状态时:
0或状态的状态退出,与单元文件的[Service]部分中指定的SuccessExitStatus参数不同 TimeoutStartSec或TimeoutSec设置,默认为DefaultTimeoutStartSec值,通常为90秒,也可以在system.conf设置, [Manager]部分 type=notify ),和上面一样,由WatchdogSec , RuntimeWatchdogSec控制 该服务必须以“WATCHDOG = 1”(即“保持活动状态”)定期调用sd_notify(3)。 如果两次呼叫之间的时间大于configuration的时间,则服务处于失败状态
type在单元文件中被错误设置
GuessMainPID
取一个布尔值,指定systemd是否应该尝试猜测服务的主要PID,如果无法可靠地确定。 除非设置了Type = forking并且PIDFile =未设置, 否则该选项将被忽略,因为对于其他types或具有明确configuration的PID文件,主PID始终是已知的。 如果守护进程由多个进程组成,则猜测algorithm可能会得出不正确的结论。 如果无法确定主PID,则故障检测和服务自动重启将无法可靠运行 。 默认为yes。