我有一个 bourne shell脚本(在我的NAS上)处理所有 ipcams 的 ffmpeg 记录。为了切换某些凸轮的记录时间(等),应该每天在2个不同的小时(07:00am
和10:00pm
)重新启动该脚本,这在bash脚本中配置并且运行良好。
要启动sh脚本,我使用以下.service文件 systemd :
[Unit]
Description=record ipcams
After=tmp.mount network.target
Requires=network.target
RequiresMountsFor=/media/USB2
[Service]
Type=forking
PIDFile=/var/run/cams_record.pid
ExecStart=/bin/bash -c '/media/USB2/movie/cams/cams_record.sh'
TimeoutStopSec=1
Restart=always
[Install]
WantedBy=multi-user.target
到目前为止一切顺利。现在我真正想要的是每天在07:00am
和10:00pm
重新启动该脚本文件(或者在这两次重新启动前面提到的.service)因此我想使用 systemd计时器。我为07:00 am
创建了这样一个计时器(使用选项:OnCalender=07:00
)
问题是:拥有(永久运行)服务,如何在07:00am
和22:00pm
重新启动该服务(以及脚本文件)。我当然可以使用2个系统定时器(07:00am
为1,10:00pm
为1),但有可能将这些结合起来;即两次使用1个systemd计时器。
答案 0 :(得分:0)
使用模板计时器,您可以执行类似这样的操作
var bArray =[
{closingTime: "22:30", openingTime: "06:30", day: "SUNDAY", open: true},
{closingTime: "22:30", openingTime: "06:30", day: "MONDAY", open: false},
{closingTime: "22:30", openingTime: "06:30", day: "TUESDAY", open: true}
]
然后:
cat test@.timer
[Unit]
Description=test
[Timer]
OnCalendar=%i:00
Unit=test.service
[Install]
WantedBy=timers.target
和
systemctl daemon-reload
来源:https://fedoramagazine.org/systemd-template-unit-files/和https://jason.the-graham.com/2013/03/06/how-to-use-systemd-timers/
答案 1 :(得分:0)
您可以在一个计时器中使用多个 OnCalendar ,请参阅文档https://www.freedesktop.org/software/systemd/man/systemd.timer.html#OnCalendar=
[Unit]
Description=test
[Timer]
OnCalendar=07:00
OnCalendar=10:00
Unit=test.service
[Install]
WantedBy=timers.target