有一个systemd服务来执行一些shell。 我想用systemd计时器启动这个systemd服务。 我需要使forCalendar的值可以为devops配置。
我的第一次尝试是提供一个包含TIMER_ONCALENDAR键的配置文件, 在定时器单元中将其作为EnvironmentFile加载,并在配置文件不提供此密钥的情况下将默认值设置在定时器单元内。
[Timer]
Environment="TIMER_ONCALENDAR=*-*-* *:00,15,30,45:00"
EnvironmentFile=/etc/sysconfig/my-config-file
OnBootSec=2min
OnCalendar=${TIMER_ONCALENDAR}
Unit=myservice.service
[Install]
WantedBy=multi-user.target
我的问题是,该服务只运行一次,而不是每15分钟运行一次。 甚至可以在计时器单元中使用环境变量以及如何使用?
答案 0 :(得分:2)
如果您不确定某个指令,例如Environment=
,则可以使用man systemd.directives
来查找指令所记录的手册页。
在这种情况下,它记录在man systemd.exec
中,它解释了Environment=
适用于4种类型的单位文件,但是"计时器"文件不是其中之一。
通过阅读“systemd.timer”,您可以发现系统定时器没有提及环境变量。
但是你提到你的最终目标是帮助DevOps自动化。这是可能的。
了解" drop-in" man systemd.unit. You can create a file which contains *only* the
OnCalendar`指令中的文件,它将覆盖或添加到另一个基本配置文件。
DevOps人员可以轻松自动添加或替换包含OnSchedule=
指令的文件。