Cronjob,每 20 分钟一次。重启后直接启动

Cronjob,每 20 分钟一次。重启后直接启动

运行类似 cronjob 的

*/15 * * * * sh /home/me/skript.sh  >> /home/me/out.log 2>&1

每 15 分钟执行一次skript.sh。12:10 启动计算机,我必须等待 5 分钟。

有没有办法让 cronjob 在重启后立即启动,然后每 15 分钟启动一次?

谢谢,马丁

答案1

systemd 来救援

这是不可能的,cronsystemd可以做到。您需要创建两个 systemd 单元,一个用于启动脚本,一个用于计时器。

文件/etc/systemd/system/my-fifteen-minutes.timer

[Unit]
Description=15 minute timer

[Timer]
# start this 0 minutes after boot:
OnBootSec=0 min

# ... and then every 15 minutes:
OnActiveSec=15 min

[Install]
WantedBy=multi-user.target  

文件/etc/systemd/system/my-fifteen-minutes.service(注意不同的扩展名):

[Unit]
Description=My script

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/home/me/skript.sh >> /home/me/out.log 2>&1"
User=me

将这些文件放入目录中/etc/systemd/system,然后使用以下命令启用计时器

# make systemd aware of them
sudo systemctl daemon-reload

# make sure the timer is engaged at startup
sudo systemctl enable my-fifteen-minutes.timer

# start the timer "now" (without rebooting):
sudo systemctl start my-fifteen-minutes.timer

# examine the status:
systemctl status my-fifteen-minutes.timer my-fifteen-minutes.service

命令systemctl status my-fifteen-minutes.timer将显示类似

● my-fifteen-minutes.timer - 15 minute timer
   Loaded: loaded (/etc/systemd/system/my-fifteen-minutes.timer; enabled; vendor preset: enabled)
   Active: active (waiting) since Sun 2018-07-01 14:42:05 CEST; 1s ago
  Trigger: Sun 2018-07-01 14:57:05 CEST; 14min left

Jul 01 14:42:05 stratum9 systemd[1]: Started 15 minute timer.

这意味着:计时器已触发1s ago并将在约 14 分钟后再次触发(于“2018-07-01 星期日 14:57:05 CEST”)。

请注意计时器服务是两个不同的东西,你需要同时定义它们。默认情况下,定时器单元开始服务单位具有相同名称(扩展名除外.timerservice,iefoo.timer将控制foo.service(但您可以覆盖它)。定时器单元只是定义什么时候发生了一些事情服务单位,以及服务单位定义实际操作(在您的情况下:启动脚本/home/me/skript.sh)。


进一步阅读:

相关内容