首页 > 解决方案 > 调用服务模板的目标的 systemd 计时器

问题描述

我有一个 systemd 模板,load@.service定义为:

[Unit]
Description=load script
Wants=network-online.target
After=network-online.target
PartOf=load.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 load -d %i
User=root

[Install]
WantedBy=default.target

我需要使用不同的参数运行此脚本的四个不同实例-d,因此我设置了一个load.target定义为:

[Unit]
Description=dataloader.load workers
Wants=load@1.service load@2.service load@3.service load@4.service

[Install]
WantedBy=multi-user.target

我希望四个实例中的每一个都每 10 分钟运行一次。

如何设置 systemd 计时器以.target间隔调用?

标签: timersystemdsystemctl

解决方案


您可以创建一个load@.timer定义为的计时器单元:

[Unit]
Description=Run load@.service every 10 minutes

[Timer]
OnCalendar=*:0/10
AccuracySec=1us

并修改load.target以调用.timer单位而不是.service单位:

[Unit]
Description=dataloader.load workers
Wants=load@1.timer load@2.timer load@3.timer load@4.timer

[Install]
WantedBy=multi-user.target

推荐阅读