Agendar um cron job em um computador que não está ligado continuamente?

Agendar um cron job em um computador que não está ligado continuamente?

Quero executar um script no primeiro dia de cada mês.
Se o computador estiver desligado, gostaria de executá-lo na próxima vez que for ligado.

O Anacron se enquadra no caso de uso "desligado", mas fornece apenas intervalos diários, semanais e mensais. Mensalmente é tarde demais e semanalmente cedo demais.

Eu verifiquei o fcron, mas esse pacote entra em conflito com o Timeshift, então isso não é uma opção.

Eu estava pensando se o cron pudesse executar a tarefa uma vez, a qualquer momento entre o primeiro e o quarto dia de cada mês, tudo bem também. Dei uma olhada na sintaxe do cron e achei que isso não é possível.

Alguém sabe como resolver isso?

Estou no Arch Linux (Manjaro).

Responder1

Algo assim (não testado)

#!/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 

informação relacionada