在未连续开机的计算机上安排 cron 作业?

在未连续开机的计算机上安排 cron 作业?

我想在每个月的 1 号运行一个脚本。
如果计算机已关闭,我想在下次打开时执行它。

Anacron 适合“断电”用例,但它仅提供每日、每周、每月的间隔。每月太晚,每周太早。

我检查了 fcron 但该包与 Timeshift 冲突,因此这不是一个选项。

我在想如果 cron 可以在每月 1 号到 4 号之间的任何时间运行一次任务,那也可以。我查看了 cron 语法,认为这实际上是不可能的。

有人知道如何解决这个问题吗?

我使用的是 Arch Linux (Manjaro)。

答案1

像这样的东西(未经测试的

#!/bin/bash
# run this via crontab on days 1-4 and @reboot
#
# Store the run_month here, or somewhere writable on disk not /tmp
runfile="$HOME/run_month"
# make sure $runfile exists, initalize to a non-month if 1st run ever 
[[ ! -f "$runfile" ]] && echo "init" >"$runfile"
#
# get the last month we ran
rf="$(cat "$runfile")"
# get the current month
cm="$(date "+%b")"
# if $rf is the same as $cm, quit
if [[ "$cm" = "$rf" ]] ; then
  exit
fi
# Remember we ran this month
echo "$cm" >"$runfile"
#
# Left  as an exercise for the student 

相关内容