Executando script no Crontab a cada 3 dias uma vez

5

Eu tenho alguns scripts em Perl que precisam ser executados a cada 3 dias uma vez. A seguinte é a sintaxe que eu digitei: Você pode, por favor, me avisar, Está correto ou errado?

30 19    * * */3   root   /var/scripts/svn_backup.pl
    
por Caterpillar 11.03.2013 / 06:15

2 respostas

10

Está errado. A última coluna é o dia da semana. Você provavelmente deseja mover */3 para a terceira coluna (dia do mês):

*     *     *     *     *      command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)
    
por 11.03.2013 / 06:55
13

O * / 3 está na coluna errada e sua especificação deve ser

30 19 */3 * * root /var/scripts/svn_backup.pl 

A sintaxe * / 3 é o mesmo que dizer 1,4,7 ... 25,28,31. Note que alguns meses ele será executado em 31 e e no próximo mês ele será executado em 1 st porque as especificações de intervalo não são agrupadas, elas sempre começam no início de uma sequência. Nesse caso, seu script é executado sem o intervalo necessário.

Se você precisar de algo para ser executado a cada três dias, será necessário executar o script todos os dias e determinar se três dias se passaram e sair / continuar conforme apropriado.

No perl, você poderia fazer algo como

if ( int (time/86400)%3 != 0)  {exit 0};

que executaria o script a cada 3 dias com base na época do UNIX.

    
por 11.03.2013 / 08:25

Tags