Como definir a expressão cron para executar primeiro dia da semana (MON-FRI) e primeiro fim de semana (SAT-SUN) do mês?

0

Eu tentei para a expressão cron do fim de semana (SAT-SUN):

0 0 18 ? 1/1 SAT#1,SUN#1 *  

mas não funcionou.

    
por Vitthal Muguli 19.02.2016 / 06:00

1 resposta

2

Você não diz qual versão do CRON está usando, mas da minha experiência limitada, geralmente, a Configuração do CRON é -

Minuto Dia Mês Dia-da-semana seguido pelo seu comando para executar

assim, no primeiro dia do mês, isso seria 0 0 1 * * não iniciando 0 0 18

Uma solução é que você pode usar a sintaxe do caso bash ... declaração esac

0 0 1,2,3 * * case 'date "+\%w\%d"' in \[1-5]\01|\1\02|\1\03) /path/to/your/script ;; esac 

A entrada cron é então verificada em relação ao valor "case word in" da expressão até que uma correspondência seja encontrada. Se nada corresponder, a condição padrão será usada.

Bash Formato básico de data $ date “+ Onde Parâmetro da lista abaixo e separador é qualquer separador de campo como hífen (-), barra, dois pontos: e é opcional.

Exemplos de formato de data de bash % d é palavra-chave para uma data de dois dígitos % w dia da semana a partir de domingo (0), ou seja, smtwtfs (nota domingo pode ser 0 e 7).

Aqui, a palavra string é comparada com todos os padrões até que uma correspondência seja encontrada. A (s) instrução (ões) que seguem o padrão correspondente é executada. Se nenhuma correspondência for encontrada, a instrução case sairá sem executar nenhuma ação.

Quando a (s) instrução (ões) executa (s), o comando ;; indica que o fluxo deve pular para o final da declaração de caso inteira.

então se a data for 01 de segunda a sexta ou (dia 1) segunda é a data 02 ou 03 do mês, então execute seu script às 00:00 hrs, caso contrário não faça nada

ou para o fim de semana

0 0 1 * * case 'date "+\%w\%d"' in \0\01|\6\01|\6\02|\6\03|\6\04|\6\05|\6\06|\6\07) /path/to/your/script ;; esac

Caso contrário, mas nem todos os CRON funcionam da mesma forma, você também pode tentar as seguintes opções.

Para todos os sábados ou domingos, se for o 1º ao sétimo

0 0 1-7 * 6,7

0 0 1-7 * SAT,SUN

Primeiro dia da semana do mês

0 0 1W * *  

Primeiro sábado ou domingo, se for do 1º ao 7º

0 0 1-7 * 6#1,7#1   

0 0 1-7 * SAT#1,SUN#1
    
por 29.02.2016 / 13:16

Tags