L character in Cron Expression para “Last Day of the Month”

2

Atualmente, estou escrevendo um artigo sobre o cron para pessoas que estão familiarizadas com a ferramenta, mas não necessariamente a usam com frequência. Eu quero que os exemplos sejam compatíveis com os desktops Unix mais comuns em uso (post 2002 linux, bsd, osx).

Ao procurar por uma expressão cron para "último dia do mês", a maioria das recomendações que eu encontrei sugere usar uma combinação de uma expressão cron que seria executada de 28 a 31 de cada mês combinada com um comando que inclui uma comparação de data booleana.

TODAY='date +%m' # Computes the month for today (01-12)
TOMORROW='date --date=tomorrow +%m' # Computes the month for tomorrow (01-12)
0 0 28-31 * * [$TODAY -lt $TOMORROW] && command

Este parece ser um truque popular do Unix. Eu recentemente deparei com este artigo da wikipedia no Cron Expressions que discute alguns personagens que eu não vi mencionados em nenhum outro lugar, nem mesmo as páginas do homem. De acordo com o artigo, o caractere L pode ser usado em uma expressão para especificar o último dia do mês (ou da semana).

Qual versão do cron suporta isso? quão amplamente suportado é isso? por que é tão pouco conhecido?

    
por Michael Ekoka 07.03.2010 / 00:29

2 respostas

1

Eu não sei sobre a sintaxe L, mas no BSD você pode usar:

       string     meaning
       ------     -------
       @reboot    Run once, at cron(8) startup.
       @yearly    Run every January 1, "0 0 1 1 *".
       @annually  (same as @yearly).
       @monthly   Run the first day of every month, "0 0 1 * *".
       @weekly    Run every Sunday, "0 0 * * 0".
       @daily     Run every midnight, "0 0 * * *".
       @midnight  (same as @daily).
       @hourly    Run every hour, on the hour, "0 * * * *".

Mas isso também não é padrão ...

    
por 07.03.2010 / 14:17
1

Eu nunca ouvi falar dessa construção L , certamente não é um padrão que eu saiba (definitivamente não no Vixie cron de acordo com a página do manual e alguns testes empíricos).

Eu não esperaria que funcionasse, exceto na máquina solitária do Wikipedian, e sugiro usar o método que você descreve em sua pergunta, que funcionará praticamente em qualquer lugar.

    
por 07.03.2010 / 09:43