linux系统Systemd设置服务延迟启动和超时时间
1、问题
今天编写的一个开机自启服务(A.service),系统重启后服务启动成功,但是脚本功能未生效。
2、原因分析
(1)首先尝试手动重启服务,服务启动成功,排除服务启动脚本功能编写错误的可能性。
(2)系统开机后查看脚本日志输出,发现是脚本运行过程中找不到display :0,中断了。
(3)猜测有可能是开机过程中,有一个服务(B.service)还未启动成功,就已经开始启动A.service服务。
3、解决方法
(1)添加服务B.service在A.service服务的依赖中
1 | [Unit] |
注意:After和Requires是搭配使用的。
(2)增加服务启动延时时间,此处设置为延时6秒。
1 | [Service] |
ExecStartPre:设置在执行 ExecStart= 之前执行的命令行。 语法规则与 ExecStart= 完全相同。
sleep命令
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分钟
sleep 1h 睡眠1小时
延迟启动
在[Service]
标签下增加ExecStartPre=/bin/sleep 30
,表示延迟30秒启动
超时时间
在[Service]
标签下增加TimeoutStartSec=600
,表示服务启动超时时间为600秒
来源:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 月星塘!