Jam*_*son 25 scheduling systemd
我想在特定时间启动和停止 systemd.service。据推测,我将使用 .timer 单元来启动作业,但是是否有内置的方法可以在特定持续时间后或特定时间停止作业,或者我是否必须创建第二个 .timer 单元来执行stop?
谢谢
Joh*_*oon 13
您可以使用几个 cron 作业:
#???????????????分钟 (0 - 59) # ? ??????????????? 小时 (0 - 23) # ? ? ?????????????????? 每月的第几天 (1 - 31) # ? ? ? ????????????????????? 月 (1 - 12) # ? ? ? ? ?????????????????? 星期几 (0 - 6) # ? ? ? ? ? # ? ? ? ? ? * * * * * systemctl start $SERVICE.service * * * * * systemctl stop $SERVICE.service
有关 cron 的更多信息:https://en.wikipedia.org/wiki/Cron,https://wiki.archlinux.org/index.php/Cron
小智 12
要使用计时器停止服务 A,您可以创建一个oneshot将与它发生冲突的类型的服务 B ,然后使用计时器启动服务 B。
如果一个单元在另一个单元上有一个 Conflicts= 设置,启动前者将停止后者,反之亦然。(来源)
A.服务:
[Unit]
Conflicts=B.service
...
Run Code Online (Sandbox Code Playgroud)
B.服务:
[Unit]
Description=B service description
[Service]
Type=oneshot
ExecStart=/bin/echo ''
Run Code Online (Sandbox Code Playgroud)
B.定时器:
[Timer]
AccuracySec=1
OnActiveSec=10
[Install]
WantedBy=timers.target
Run Code Online (Sandbox Code Playgroud)
以下将在 10 秒后停止服务 A。
systemctl start A.service
systemctl start B.timer
Run Code Online (Sandbox Code Playgroud)
确实有另一种方法可以在.service文件中配置某些运行时后停止服务。
RuntimeMaxSec=...
Run Code Online (Sandbox Code Playgroud)
您可能不喜欢服务被视为失败的事实,但这是杀死长期运行的服务或多或少的合乎逻辑的结果。
为了获得更好的答案,您可能需要解释使用这种不寻常功能的理由。服务通常意味着永远运行或直到它们被明确停止,而不仅仅是固定的时间。
| 归档时间: |
|
| 查看次数: |
22332 次 |
| 最近记录: |