Timer 如何在systemd定时器单元中使用环境变量?

Timer 如何在systemd定时器单元中使用环境变量?,timer,environment-variables,systemd,Timer,Environment Variables,Systemd,有一个systemd服务来执行一些shell。 我想用systemd定时器启动这个systemd服务。 我需要为devops配置OnCalendar的值 我的第一次尝试是提供一个配置文件,其中包含密钥TIMER\u ONCALENDAR, 将其加载为定时器单元内的环境文件,并在配置文件未提供此密钥的情况下在定时器单元内设置默认值 [Timer] Environment="TIMER_ONCALENDAR=*-*-* *:00,15,30,45:00" EnvironmentFile=/etc/

有一个systemd服务来执行一些shell。 我想用systemd定时器启动这个systemd服务。 我需要为devops配置OnCalendar的值

我的第一次尝试是提供一个配置文件,其中包含密钥TIMER\u ONCALENDAR, 将其加载为定时器单元内的环境文件,并在配置文件未提供此密钥的情况下在定时器单元内设置默认值

[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分钟运行一次。
甚至可以在计时器单元内使用环境变量吗?如何使用?

如果您不确定某个指令,如
环境=
,则可以使用
man systemd.directives
查找该指令记录的手册页

在本例中,它记录在
man systemd.exec
中,这解释了
Environment=
在4种类型的单位文件中工作,但“计时器”文件不是其中之一

通过阅读“man systemd.timer”,您可以发现没有提到systemd定时器的环境变量

但是你提到你的最终目标是帮助DevOps自动化。那是可能的

阅读
mansystemd.unit中的“drop-in”文件。您可以创建一个文件,其中*仅*包含
OnCalendar`指令,该指令将覆盖或添加到另一个基本配置文件中

DevOps人员可以轻松地自动添加或替换包含
OnSchedule=
指令的文件