Tarefa Cron Diária, Semanal e Mensal

4

Recentemente, escrevi um script simples para fazer o backup de um diretório para o S3. Meu objetivo é executar backups diários, semanais e mensais com regras de retenção diferentes com base na frequência do S3.

Tudo está funcionando muito bem com uma exceção. Meu cron job semanal executa todos os dias. Aqui está o crontab:

0 3 1 * * /usr/s3_sync_dir /dropbox MONTHLY
0 2 2-31 * THU /usr/s3_sync_dir /dropbox WEEKLY
0 3 2-31 * * /usr/s3_sync_dir /dropbox DAILY

Portanto, o trabalho MONTHLY é executado às 3h no dia 1º de cada mês. O WEEKLY deve então ser executado às quintas-feiras às 2 da manhã, se não for o primeiro. E o DIÁRIO apenas corre todos os dias, não é o primeiro. Este validador on-line confirma que a WEEKLY deve ser publicada todas as quintas-feiras.

Alguém tem dúvidas sobre por que meu trabalho SEMANAL é executado todas as manhãs?

Isso está no Ubuntu 16.04.2 LTS.

    
por Staros 27.04.2017 / 15:27

1 resposta

5

Do manual (man 5 crontab)

Note: The day of a command's execution can be specified by two fields — day of month, and day of week. If both fields are restricted (i.e., aren't *), the command will be run when either field matches the current time. For example, ''30 4 1,15 * 5'' would cause a command to be run at 4:30 am on the 1st and 15th of
each month, plus every Friday. One can, however, achieve the desired result by adding a test to the command (see the last example in EXAMPLE CRON FILE below).

Eu acho que você deveria transformar seu 2-31 em *

OR

você pode usar @daily, @weekly e @monthly.

OR

você pode criar um link para seus scripts em /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly.

    
por 27.04.2017 / 16:12

Tags