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