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.monthlyem/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 rmadiciona 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 fie 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.monthlyModifique 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=""