¿Programar una tarea cron en una computadora que no está encendida continuamente?

¿Programar una tarea cron en una computadora que no está encendida continuamente?

Quiero ejecutar un script el día 1 de cada mes.
Si la computadora estaba apagada, me gustaría ejecutarla la próxima vez que se encienda.

Anacron encaja en el caso de uso "apagado", pero solo proporciona intervalos diarios, semanales y mensuales. Lo mensual es demasiado tarde y lo semanal demasiado temprano.

Revisé fcron pero ese paquete choca con Timeshift, por lo que no es una opción.

Estaba pensando que si cron puede ejecutar la tarea una vez, en cualquier momento entre el 1 y el 4 de cada mes, eso también estaría bien. Eché un vistazo a la sintaxis de cron y creo que en realidad eso no es posible.

¿Alguien sabe cómo solucionar esto?

Estoy en Arch Linux (Manjaro).

Respuesta1

Algo como esto (no probado)

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

información relacionada