Crontab funciona incorretamente

1

Eu tenho um trabalho definido para ser executado conforme o cronograma abaixo

0,15,30,45 * 8-17 * 1-5

No entanto, em vez de ser exibido apenas de segunda a sexta e apenas de 8 a 17 do mês, esse trabalho é executado a cada 15 minutos (incluindo finais de semana e dias do mês, de 8 a 17). Não tenho certeza se o problema está nos intervalos de números ou em outro lugar.

    
por Mandy 13.08.2015 / 20:08

1 resposta

1

De man 5 crontab :

  

O dia da execução de um comando pode ser especificado por dois campos - dia   do mês e dia da semana. Se ambos os campos forem          restrito (ou seja, não é *), o comando será executado quando um dos campos corresponder à hora atual. Por exemplo,          '' 30 4 1,15 * 5 '' faria com que um comando fosse executado às 4h30 nos dias 1 e 15 de cada mês, além de todas as sextas-feiras. Pode-se, no entanto,          alcançar o resultado desejado adicionando um teste ao comando.

Portanto, no seu caso, o comando está sendo executado na data 8-17 de todos os meses mais mon-fri de toda semana.

Para executar o trabalho apenas em mon-fri do dia 8-17 de cada mês, precisamos adicionar um teste:

*/15 * 8-17 * * /bin/bash -c '[[ $(/bin/date '+%u') =~ 1|2|3|4|5 ]]' && your_command

O trabalho acima será executado após cada 15 minutos de 8-17 de cada mês e irá verificar se o dia é entre segunda a sexta pelo teste [[ $(/bin/date '+%u') =~ 1|2|3|4|5 ]] , se assim for então your_command será executado, caso contrário não .

Além disso, à medida que você estiver usando um intervalo de 15 minutos, use */15 em vez do intervalo separado por vírgulas.

    
por heemayl 13.08.2015 / 21:46