wes*_*wes 41 linux service systemd
我有一个简单的systemd服务需要定期重新启动,以防止其进程被窃听.是否有系统服务的配置选项可以定期重启它们?所有Restart*
选项似乎都与退出时重新启动服务有关.
Ale*_*bes 63
这可能不是在提出问题时出现的,但现在有一个叫做的选项RuntimeMaxSec
,它在服务运行一段时间后终止服务.
例如
[Service]
Restart=always
RuntimeMaxSec=604800
Run Code Online (Sandbox Code Playgroud)
对我而言,这似乎比滥用Type=notify
和优雅更优雅WatchdogSec
.
Sat*_*urn 33
是的,您可以通过提供服务使您的服务定期重新启动Type=notify
.在服务文件的[Service]部分中添加此选项Restart=always
以及给予WatchdogSec=xx
,其中xx是您想要重新启动服务的时间段.在此处,您的进程将在xx时间段后被systemd杀死,并将再次由systemd重新启动.例如.
[Unit]
.
.
[Service]
Type=notify
.
.
WatchdogSec=10
Restart=always
.
.
[Install]
WantedBy= ....
Run Code Online (Sandbox Code Playgroud)
mat*_*mat 32
我看到这里的解决方案似乎很优雅,如果有点迂回.关键的想法是创建一个由重启另一个服务的计时器触发的一次性服务.
对于计时器:
[Unit]
Description=Do something daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
Run Code Online (Sandbox Code Playgroud)
对于一次性服务:
[Unit]
Description=Restart service
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl try-restart my_program.service
Run Code Online (Sandbox Code Playgroud)
对于Ubuntu 16.04 LTS上的一次性服务:
[Unit]
Description=Restart service
[Service]
Type=oneshot
ExecStart=/bin/systemctl try-restart my_program.service
Run Code Online (Sandbox Code Playgroud)
此解决方案允许您利用systemd的计时器,包括在一天中的特定时间重新启动服务的能力,而不仅仅是在经过一段时间后.
Fri*_*ker 13
怎么样的crontab喜欢
30 3 * * sun /bin/systemctl restart yourService
Run Code Online (Sandbox Code Playgroud)
这将在每个星期天凌晨3:30重新启动服务.
只需一些替代方法即可最终达到相同的目标:
小智 5
想发表评论
[Service]
Restart=always
RuntimeMaxSec=604800
Run Code Online (Sandbox Code Playgroud)
回答上面,但不能没有更多的积分。
评论是此解决方案将调用由 设置的故障处理OnFailure=failure_handling.service
。由于计划的重启不是真正的故障,因此来自故障处理服务的任何日志记录、通知等都是不需要的,并且可能会造成破坏。
实际的定期重启对于 systemd 来说是一个明智的功能,但我不会屏住呼吸。
归档时间: |
|
查看次数: |
34461 次 |
最近记录: |