Crontab no último dia do mês
Como agendar um comando na crontab para ser executado no último dia do mês, se existem meses com 28, 30 e 31 dias?
Pesquisando na internet achei a solução proposta pelo Ataliba Teixeira que funciona muito bem por sinal, a qual reproduzo a seguir:
0 8 28-31 * * [ `date -d tomorrow +%e` -eq 1 ] && comando_do_ultimo_dia
Ele verifica se amanhã será dia 1º, se for ele executa o comando_do_ultimo_dia.
O problema é que eu queria fazer isso no Solaris 9 e o comando date no Solaris não tem a riqueza de funcionalidades do date do Linux.
Então criei uma outra solução, acho que mais genérica, que é a seguinte:
0 8 28-31 * * [ `cal|tail -1|awk ‘{print($NF)}’` -eq `date +%e` ] && comando_do_ultimo_dia
Em resumo:
cal lista um calendario do mês atual
tail -1 extrai a última linha deste calendário
awk ‘{print($NF)}’ extrai a última coluna desta linha, que é o último dia do mês
date +%e é o dia atual que é comparado com o último dia do mês atual
se forem iguais será executado o comando após o &&
Filed under: Curiosidades, Sistema Operacional, Todos
Enviar por e-mail




Executando um comando na crontab no último dia do mês…
leia mais……
Executando um comando na crontab no último dia do mês…
leia mais…..