我想在每個月的 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