cronjob timing - para cada 3 meses

2

Eu achei este exemplo:

0 9 1-7 * 1 *                       First Monday of each month, at 9a.m.
  1. Não estou certo de que a parte 1-7 seja supostamente as datas de cada mês. Por que é um 1-7 em vez de um * ?

  2. Como escrevo um cronjob que é executado a cada 3 meses em 0000hrs?

    0 0 1 */3 * *
    

O acima está correto?

    
por Noob 13.07.2015 / 03:49

2 respostas

1

#* * * * * command to be executed
#- - - - -
#| | | | |
#| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
#| | | ------- Month (1 - 12)
#| | --------- Day of month (1 - 31)
#| ----------- Hour (0 - 23)
#------------- Minute (0 - 59)

O seu está correto. Depois de cinco astreisks, deve haver um comando shell.

Você pode confirmar se a guia cron está em execução ou não, fazendo tail -f /var/log/syslog | grep CRON . Para fins de teste, você pode usar n minutos.

    
por 13.07.2015 / 05:46
1

0 9 1-7 * * executa o trabalho uma vez por dia (às 9:00), mas apenas nos primeiros 7 dias do mês. Essa é uma maneira de executar um trabalho na primeira segunda-feira do mês: execute-o nos primeiros 7 dias, mas não faça nada a menos que esse dia seja uma segunda-feira.

0 9 1-7 * *  if [ "$(date +%u)" = 1 ]; then do_stuff; fi

0 9 * 1 * executa o trabalho toda segunda-feira. Essa é outra maneira de executar um trabalho na primeira segunda-feira do mês: execute-o toda segunda-feira, mas não faça nada a menos que esteja nos primeiros sete dias do mês.

0 9 * * 1  if [ "$(date +%_d)" -le 7 ]; then do_stuff; fi

0 9 1-7 * 1 * parece algum tipo de tentativa fracassada de combinar esses dois métodos. Observe que 0 9 1-7 * 1 executa o trabalho toda segunda-feira e todos os dias nos primeiros sete dias do mês.

Quanto a 0 0 1 */3 * (você coloca um * extra no final), ele executa um trabalho no primeiro dia de cada mês à meia-noite, mas somente se o mês for um múltiplo de 3. Isso é realmente executado a cada três meses.

    
por 14.07.2015 / 02:39