systemd计时器每天2个小时启动.sh脚本

时间:2017-10-30 07:49:27

标签: systemd

我有一个 bourne shell脚本(在我的NAS上)处理所有 ipcams ffmpeg 记录。为了切换某些凸轮的记录时间(等),应该每天在2个不同的小时(07:00am10:00pm)重新启动该脚本,这在bash脚本中配置并且运行良好。

  1. 要启动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

  2. 到目前为止一切顺利。现在我真正想要的是每天在07:00am10:00pm重新启动该脚本文件(或者在这两次重新启动前面提到的.service)因此我想使用 systemd计时器。我为07:00 am创建了这样一个计时器(使用选项:OnCalender=07:00

    问题是:拥有(永久运行)服务,如何在07:00am22:00pm重新启动该服务(以及脚本文件)。我当然可以使用2个系统定时器(07:00am为1,10:00pm为1),但有可能将这些结合起来;即两次使用1个systemd计时器。

2 个答案:

答案 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