systemd 服务跳过重叠运行

systemd 服务跳过重叠运行

我正在尝试在 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

相关内容