启动后每小时执行一次 Cron

启动后每小时执行一次 Cron

有没有办法在启动后每小时执行一次 cron,而不是每小时在特定时间执行一次?我正在使用 CentOS6 和 CentOS 7 机器。

例如:当我的计算机在 00:42 启动时,我希望它在 01:42、02:42、03:42 等时间执行。但是当计算机在 00:21 启动时,我希望 cron 在 01:21、02:21、03:21 等时间执行...

答案1

Asystemd 定时器OnActiveSec=可以使用、OnBootSec=OnStartupSec=OnUnitActiveSec=选项安排与系统启动/启动时间相应的间隔

/etc/systemd/system/your-notcron-hourly.timer
[Unit]
Description=Run Something every hour respective to systemd start time

[Timer]
OnUnitActiveSec=1h 

[Install]
WantedBy=timers.target

答案2

我认为 cron 无法做到这一点,但你可以使用一些 bash magick 来做到这一点。:)

/proc/uptime你可以在对话后获得启动时间

date -d "`cut -f1 -d. /proc/uptime` seconds ago" +%M

因此你可以/etc/cron.d/your-script像这样使用:

* * * * * user /bin/bash -c "if [[ $(date +%M) == $(date -d \"`cut -f1 -d. /proc/uptime` seconds ago\" +%M) ]]; then do-my-job; fi"

相关内容