Sintaxe do dia da semana do Crontab

204

No crontab, o campo Dia da semana é executado a partir de 0 - 6ou 1 -7?

Estou vendo informações conflitantes sobre isso. estados da wikipedia 0-6e outros sites que eu já vi 1-7.

Além disso, qual seria a implicação ou o uso 0ou 7incorreto? ou seja, o cron ainda funcionaria?

Marty Wallace
fonte

Respostas:

373

0e 7ambos representam domingo, você pode usar o que deseja, portanto, escrever 0-6 ou 1-7 tem o mesmo resultado.

Além disso, como sugerido por @Henrik, é possível substituir os números por nome abreviado de dias, como MON, THUetc,:

0 - Sun      Sunday
1 - Mon      Monday
2 - Tue      Tuesday
3 - Wed      Wednesday
4 - Thu      Thursday
5 - Fri      Friday
6 - Sat      Saturday
7 - Sun      Sunday

Graficamente:

 ┌────────── minute (0 - 59)
 │ ┌──────── hour (0 - 23)
 │ │ ┌────── day of month (1 - 31)
 │ │ │ ┌──── month (1 - 12)
 │ │ │ │ ┌── day of week (0 - 6 => Sunday - Saturday, or
 │ │ │ │ │                1 - 7 => Monday - Sunday)
 ↓ ↓ ↓ ↓ ↓
 * * * * * command to be executed

Por fim, se você desejar especificar dia a dia, poderá separar os dias com vírgulas; por exemplo SUN,MON,THU, o comando será executado apenas aos domingos, segundas e quintas-feiras.

Você pode ler mais detalhes no artigo da Wikipedia sobre Cron .

fedorqui 'Então pare de prejudicar'
fonte
4
isso é ok que eu não percebi domingo pode ser um 0 ou 7. graças
Marty Wallace
15
Esteja ciente de que você não pode fazer Sat-Sun6-7Sat,Sun
:,
Você pode confirmar que isso não diferencia maiúsculas de minúsculas? Você muda algumas vezes entre SUN, Sun, Sundayem sua resposta
MichaelChirico
1
@MichaelChirico oh, bom ponto. Verificando o artigo da Wikipedia sobre Cron que li As abreviações de mês e dia da semana não diferenciam maiúsculas de minúsculas .
fedorqui 'SO parar de prejudicar'
104
    :-) Sunday    |    0  ->  Sun
                  |  
        Monday    |    1  ->  Mon
       Tuesday    |    2  ->  Tue
     Wednesday    |    3  ->  Wed
      Thursday    |    4  ->  Thu
        Friday    |    5  ->  Fri
      Saturday    |    6  ->  Sat
                  |  
    :-) Sunday    |    7  ->  Sun

Como você pode ver acima, e como dito anteriormente, os números 0e 7são atribuídos ao domingo. Existem também os dias abreviados da semana em inglês listados, que também podem ser usados ​​no crontab.

Exemplos de número ou abreviação

15 09 * * 5,6,0             command
15 09 * * 5,6,7             command
15 09 * * 5-7               command
15 09 * * Fri,Sat,Sun       command

Os quatro exemplos fazem o mesmo e executam um comando todas as sextas, sábados e domingos às 9h15.

Em detalhe

Ter dois números 0e 7no domingo pode ser útil para escrever intervalos de dias da semana que começam 0ou terminam com 7. Assim, você pode escrever intervalos começando com domingo ou terminando com ele, como 0-2ou 5-7por exemplo (os intervalos devem começar com o número mais baixo e terminar com o mais alto). As abreviações não podem ser usadas para definir um intervalo de dias da semana.

Henrik
fonte
1
Para maior clareza, "As abreviações não podem ser usadas para definir um intervalo de dias úteis". A afirmação aqui parece ser uma maneira de dizer que não se pode separar abreviações por caracteres hífen-menos, apenas vírgulas. Em outras palavras, Fri,Sat,Sunnão pode ser reduzido para Fri-Sun.
Patrick Dark
8

Você também pode usar nomes de dias como Monsegunda Tue-feira, terça-feira etc. É mais amigável ao ser humano.

Cyril Bouthors
fonte
Isso não funcionará para algumas distribuições; testando com o Ubuntu 14.04.3 LTS, obtive "/tmp/crontab.Nuq9GE/crontab":24: dia ruim da semana"
0x4B1D 6/16
3
A Nikita verifica erros de digitação ou espaços extras. Eu tenho um "Seg-Sex" e um "Qui" no meu crontab no Ubuntu 14.04.3 e ambos funcionam muito bem. Eu suspeito que, se houver um espaço entre os personagens, você acabará com um erro.
Dale Anderson