Como agendar um cronjob quinzenal?

9

o crontab (5) define os seguintes campos:

       field         allowed values
       -----         --------------
       minute        0-59
       hour          0-23
       day of month  1-31
       month         1-12 (or names, see below)
       day of week   0-7 (0 or 7 is Sun, or use names)

e explica:

 Step values can be used in conjunction with ranges.  Following a range
 with ''/<number>'' specifies skips of the number's value through the
 range.  For example, ''0-23/2'' can be used in the hours field to specify
 command execution every other hour (the alternative in the V7 standard is
 ''0,2,4,6,8,10,12,14,16,18,20,22'').

Então, não quinzenalmente Jobs, no que diz respeito ao meu entendimento. Tenho certeza de que existem soluções alternativas, quais são as suas? Ou eu perdi alguma coisa?

    
por Roman 03.07.2012 / 16:37

6 respostas

8

Você pode fazer com que a coisa seja executada pelo cron toda quarta-feira, e depois decidir se é uma semana par ou ímpar. por exemplo:

#!/bin/bash
week=$(date +%U)
if [ $(($week % 2)) == 0 ]; then 
    echo even week
else 
    echo odd week
fi
    
por 03.07.2012 / 17:15
4

Muitos intervalos de suporte crons (você não especificou qual você está usando). Então, algo parecido com

0 0 1-7,15-21 * 3

atingiria a primeira e a terceira quarta-feira do mês.

    
por 03.07.2012 / 17:01
2

Para algo que precisa ser executado a cada duas semanas, use este verso:

0 0 * * 5 [ 'expr \'date +\%V\' \% 2' -eq 0 ] && echo "execute script" 

Este script específico está agendado para ser executado às sextas-feiras. A semana a ser executada pode ser ajustada usando "-eq 0" ou "-eq 1"

    
por 12.06.2015 / 16:53
1

Anacron é uma boa solução para as limitações do cron.

  • O Anacron tem um parâmetro Período de recorrência que você pode definir como 14.

period delay job-identifier command

14 15 test.daily /path/to/script.sh

    
por 03.07.2012 / 16:50
1

Se as suas necessidades não forem literalmente quinzenais, você poderá simplesmente executar o cronjob no primeiro e no décimo quinto dia do mês:

15 8 1,15 * * /your/script.sh

Que funciona às 8:15 da manhã no primeiro e no décimo quinto dia de cada mês, independentemente do dia da semana.

    
por 13.03.2017 / 14:52
-2

A partir dessa definição de explicação, 3/2 no campo da semana deve executar a tarefa em todas as outras quartas-feiras - é implícita, mas acho factível.

    
por 03.07.2012 / 16:51

Tags