Quando o cron executa cronjobs mensais?
cron
inicia os cronjobs mensais uma vez por mês com o tempo de modificação de /var/spool/cron/lastrun/cron.monthly
(ou mais exatamente, em um intervalo de 15 minutos após esse período).
Você pode ver isso em /usr/lib/cron/run-crons
, que é iniciado a cada 15 minutos em /etc/crontab
:
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
Ao lidar com cronjobs mensais /usr/lib/cron/run-crons
:
-
Verifica se
cron.monthly
em/var/spool/cron/lastrun/
é mais antigo que um mês. -
Pula cronjobs mensais se não for.
-
Caso contrário, exclui o arquivo de bloqueio:
eval find $SPOOL/$BASE $TIME | \ xargs --no-run-if-empty rm
adiciona o cronjob mensal à lista de execução:
if test ! -e $SPOOL/$BASE ; then # accept this dir, if it isn't empty LIST='find $CRONDIR ! -type d' if [ ! -z "$LIST" ] ; then RUN="${RUN} ${TIME_EXT}" fi fi
e executa os trabalhos.
Como posso programar cronjobs mensais?
-
Se você deseja que os cronjobs mensais sejam executados agora (ou seja, nos próximos 15 minutos), exclua
/var/spool/cron/lastrun/cron.monthly
. -
Se você quiser que os cronjobs mensais sejam exibidos às 3h a partir de hoje, faça:
$ touch -d "$(date -d "3am last month")" /var/spool/cron/lastrun/cron.monthly
Modifique o comando acima de acordo com suas necessidades.
A variável DAILY_TIME
A variável DAILY_TIME
aplica-se apenas a tarefas diárias do cron, como pode ser visto em /usr/lib/cron/run-crons
e documentado em /etc/sysconfig/cron
:
# At which time cron.daily should start. (...)
DAILY_TIME=""