crontab exclui apenas a data específica

3

Como posso escrever um cron que irá excluir uma data específica.

digamos: preciso executar um crontab das 18h às 21h em cada 30 minutos nos fins de semana e quero excluir apenas 10 de maio de 2014.

É possível? Como posso escrever isso? ou existe alguma alternativa para isso? por favor sugira.

    
por RKP 09.05.2014 / 09:30

2 respostas

4

A sintaxe padrão do cron é bem simples, não suporta exclusões. Em alguns casos, é possível criar uma lista de várias / muitas entradas cron para implementar tal lógica, mas isso tende a ser entediante e difícil de entender ou manter; No entanto, esta abordagem não é aplicável no seu caso (não menos importante, porque o cron padrão não tem noção do ano civil).

Não é um grande plano tornar os comandos do cron complicados, mas você pode fazer isso com algo relativamente simples como:

0,30 18-20 * * sat,sun [ "$(date +\%Y\%m\%d)" = "20140510" ] || mycommand
0    21    * * sat,sun [ "$(date +\%Y\%m\%d)" = "20140510" ] || mycommand

(Com " 0,30 18-21 " a tarefa também será executada às 21:30; você precisa da segunda linha se desejar executar também às 21:00, se não, então, omitir)

NOTA: Em alguns crontabs você deve escapar dos sinais de porcentagem (eles são usados para indicar novas linhas ao encher dados em linha na entrada padrão do comando), embora não no cron de Dillon.

O comando cron é realmente uma lista de comandos do shell , o operador || control fornece short avaliação de circuito dos comandos. Os comandos na lista são tentados um de cada vez, da esquerda para a direita, mas a execução é interrompida quando o primeiro retorna verdadeiro. Se a comparação da string de data for verdadeira (somente true por um dia) mycommand não será executado, quando a comparação de datas retornar false mycommand será executada.

Note, entretanto, que muitas coisas podem diferir na maneira como o cron inicia programas. A abordagem mais robusta é usar um script wrapper para implementar sua lógica condicional.

    
por 09.05.2014 / 14:19
0

Você pode usar X-Y para intervalos de tempo e */Z para frequências. Onde:

  • X é o início do intervalo.
  • Y é o final do intervalo.
  • Z é apenas um divisor (por exemplo, cada Z ).

Para excluir uma data, basta criar meu próprio script. Dentro deste script, verifique a data e, em seguida, decida se você deseja executar as seguintes instruções.

    
por 09.05.2014 / 12:32

Tags