我正在尝试在 Oracle Linux Server 7.7 上使用 systemd 安排服务。
用例很简单;计时器需要每小时运行一次服务(下午 2 点到上午 9 点之间) - 但是,仅当该程序尚未运行时。经过这个答案,我以为默认就是这样的。
所以期待将会:
- 2:00:计时器启动服务 - 服务开始运行,假设这次运行了 90 分钟
- 3:00:由于服务仍在运行,这次什么也不做
- 4:00:服务在 3:30 左右完成,因此再次启动服务 - 服务现在运行 20 分钟
- 5:00:定时器再次启动服务
- ...
但是,那当前结果是:
- 2:00:计时器启动服务 - 服务开始运行,假设这次运行了 90 分钟
- 3:00:由于服务仍在运行,因此不执行任何操作
- 3:30:服务完成,因此立即再次启动
- ...
有人可以帮我解决这个问题吗?
多谢你们!
我的计时器:
[Unit]
Description=Run service between 02-21 (inclusive) every hour
[Timer]
# the 02..21 syntax didn't work on this distribution, but I am open to suggestions to simplify it :)
OnCalendar=*-*-* 02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21:00:00
Unit=test-service.service
[Install]
WantedBy=timers.target
我的服务:
[Unit]
Description=Service for testing purposes
[Service]
WorkingDirectory=/opt/apps/long-running-service
ExecStart=/opt/apps/long-running-service
Restart=no
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target