Sintassi del giorno della settimana di Crontab


204

In crontab il campo del giorno della settimana parte da 0 - 6o 1 -7?

Sto vedendo informazioni contrastanti su questo. Stati di Wikipedia 0-6e altri siti che ho visto sono 1-7.

Inoltre quale sarebbe l'implicazione o l'utilizzo 0o 7erroneamente? cioè il cron funzionerebbe ancora?

Risposte:


373

0ed 7entrambi stanno per domenica, puoi usare quello che vuoi, quindi scrivere 0-6 o 1-7 ha lo stesso risultato.

Inoltre, come suggerito da @Henrik, è possibile sostituire i numeri dal nome abbreviato di giorni, come ad esempio MON, THU, ecc:

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

Infine, se si desidera specificare giorno per giorno, è possibile separare i giorni con virgole, ad esempio SUN,MON,THUeseguirà il comando solo di domenica, lunedì e giovedì.

Puoi leggere ulteriori dettagli nell'articolo di Wikipedia su Cron .


4
ok questo è quello che non ho realizzato domenica può essere uno 0 o 7. grazie
Marty Wallace,

15
Sat-Sun6-7Sat,Sun
Ricorda

Puoi confermare che non fa distinzione tra maiuscole e minuscole? Si passa un paio di volte tra SUN, Sun, Sundaynella vostra risposta
MichaelChirico

1
@MichaelChirico oh, buon punto. Controllando l'articolo di Wikipedia su Cron I letto Le abbreviazioni di mese e giorno della settimana non fanno distinzione tra maiuscole e minuscole .
fedorqui "SO smettere di danneggiare" l'

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

Come puoi vedere sopra, e come detto prima, i numeri 0e7 sono entrambi assegnati a domenica. Ci sono anche i giorni abbreviati inglesi della settimana elencati, che possono anche essere usati nel crontab.

Esempi di numero o abbreviazione

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

I quattro esempi fanno lo stesso ed eseguono un comando ogni venerdì, sabato e domenica alle 9.15.

In dettaglio

Avere due numeri 0e 7per domenica può essere utile per scrivere intervalli di giorni feriali che iniziano 0o finiscono con 7. Quindi puoi scrivere intervalli che iniziano con domenica o finiscono con esso, come 0-2o 5-7per esempio (gli intervalli devono iniziare con il numero più basso e terminare con il più alto). Le abbreviazioni non possono essere utilizzate per definire un intervallo nei giorni feriali.


1
Per chiarezza, "Le abbreviazioni non possono essere utilizzate per definire un intervallo nei giorni feriali". l'affermazione qui sembra essere un modo per dire che non si possono separare le abbreviazioni con i trattini meno solo virgole. In altre parole, Fri,Sat,Sunnon può essere abbreviato in Fri-Sun.
Patrick Dark,

8

Puoi anche usare i nomi dei giorni come Monlunedì, Tuemartedì, ecc. È più amico dell'uomo.


Questo non funzionerà per alcune distribuzioni; test con Ubuntu 14.04.3 LTS, ho ottenuto "/tmp/crontab.Nuq9GE/crontab":24: brutto giorno della settimana"
0x4B1D

3
Controllo @Nikita per errori di battitura o spazi extra. Ho sia un "lun-ven" che un "gio" nel mio crontab su Ubuntu 14.04.3 ed entrambi funzionano bene. Sospetto che se ci fosse uno spazio tra i personaggi, finiresti con un errore.
Dale Anderson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.