有没有办法在启动后每小时执行一次 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"