Respostas:
Estou dando uma resposta alternativa aqui, mesmo que Trevor esteja correto.
A @weekly
palavra-chave cron faz exatamente como ele mencionou. No entanto , a maioria das distribuições usa run-parts
para executar seus próprios arquivos crontab agendados (a cada hora, diariamente, semanalmente e mensalmente) que não fazem uso das palavras-chave do cron.
Por exemplo , o Ubuntu possui um /etc/cron.weekly
arquivo que contém um arquivo separado para cada cronjob.
Isso geralmente é definido em /etc/crontab
A versão karmic 9.10 do Ubuntu tem o seguinte em /etc/crontab
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Portanto, o crontab semanal no Ubuntu é executado às 6h07 no domingo
Nota: ao procurar páginas de manual para implementações do crontab, você deseja usar em man 5 crontab
vez de apenas man crontab
. Este último fornecerá apenas a sintaxe para o comando crontab. O primeiro fornece detalhes de implementação do crontab.
So the weekly crontab in Ubuntu is run at 6.47am on Sunday
. Isso está incorreto porque a test -x /usr/sbin/anacron ||
parte do comando diz apenas para executar o material à direita de ||
se "/ usr / sbin / anacron" NÃO for executável ou não existir, mas existe, portanto run-parts
nunca será executado por ele cron
! Em vez disso, anacron
deve estar lidando com isso, certo? A tabela de Aanacron em "/ etc / anacrontab" mostra isso semanalmente:, o 7 10 cron.weekly run-parts --report /etc/cron.weekly
que significa que o trabalho semanal é executado a cada 7 dias, com um atraso de 10 minutos.
@weekly é equivalente a: 0 0 * * 0
Então, será executado às 00:00 no domingo.
A resposta está na página de manual do próprio crontab, ( man 5 crontab
):
Esses "apelidos" de especificação de horário especial são suportados, que substituem os 5 campos de data e hora iniciais e são prefixados pelo caractere '@':
@reboot : Run once after reboot. @yearly : Run once a year, ie. "0 0 1 1 *". @annually : Run once a year, ie. "0 0 1 1 *". @monthly : Run once a month, ie. "0 0 1 * *". @weekly : Run once a week, ie. "0 0 * * 0". @daily : Run once a day, ie. "0 0 * * *". @hourly : Run once an hour, ie. "0 * * * *".
Portanto, 0 0 * * 0
é 00:00 (em qualquer data de qualquer mês), desde que seja domingo (dia da semana 0).