Синтаксис Дня тижня Crontab


204

У crontab поле «День тижня» починається від 0 - 6або 1 -7?

Я бачу суперечливу інформацію щодо цього. Вікіпедія констатує 0-6та інші сайти, які я бачив 1-7.

Також, що буде наслідком, або використовувати 0або 7неправильно? тобто чи все-таки біг би працювати крон?

Відповіді:


373

0і 7обидва стоять у неділю, ви можете використовувати той, який хочете, тому написання 0-6 або 1-7 має однаковий результат.

Крім того, як запропонував @Henrik, можна замінити числа скороченою назвою днів, таких як MON, THUі т.д.:

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

Графічно:

 ┌────────── 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

Нарешті, якщо ви хочете вказати день у день, ви можете розділити дні комами, наприклад SUN,MON,THUвиконайте команду лише у неділю, понеділок - по четвергах.

Детальнішу інформацію ви можете прочитати у статті Вікіпедії про Cron .


4
гаразд, що я не розумію, що неділя може бути 0 або 7. дякую
Марті Уоллес

15
Будьте в курсі, що ви не можете:, Sat-Sunтільки 6-7абоSat,Sun
pkowalczyk

Чи можете ви підтвердити, що це нечутливе до регістру? Перемикання кілька разів між SUN, Sun, Sundayв своїй відповіді
MichaelChirico

1
@MichaelChirico о, хороший момент. Перевіряючи статтю Вікіпедії про Cron, яку я читав Скорочення місяця та будня не відрізняються від регістру .
fedorqui 'ТАК перестаньте шкодити'

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

Як ви бачите вище, і, як було сказано раніше, номери 0і 7обидва призначаються в неділю. Також перераховані англійські скорочені дні тижня, які також можна використовувати в кронтабі.

Приклади чисельного або скороченого використання

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

Чотири приклади роблять все те саме і виконують команду щоп’ятниці, суботи та неділі о 9.15 годині.

Детально

Маючи два числа 0та 7неділю, може бути корисним для написання діапазонів буднів, починаючи з 0або закінчуючи 7. Таким чином, ви можете писати діапазони, починаючи з неділі або закінчуючи нею, наприклад, 0-2або, 5-7наприклад, (діапазони повинні починатися з нижчого числа і закінчуватися вище). Скорочення не можна використовувати для визначення діапазону тижня.


1
Для наочності "Абревіатури не можна використовувати для визначення діапазону тижня". Тут, мабуть, йдеться про те, що не можна відокремлювати абревіатури дефісом-мінусом, а лише комами. Іншими словами, Fri,Sat,Sunйого не можна скоротити Fri-Sun.
Патрік Темний

8

Ви також можете використовувати назви днів, наприклад, Monу понеділок, Tueу вівторок тощо. Це зручніше для людини.


Для деяких дистрибутивів це не працюватиме; тестуючи Ubuntu 14.04.3 LTS, я отримав "/tmp/crontab.Nuq9GE/crontab":24: поганий день тижня"
0x4B1D

3
@Nikita перевірка на помилки друку або додаткові пробіли. У мене є "Пн-Пт" і "Чт" в моєму Crontab на Ubuntu 14.04.3, і обидва працюють добре. Я підозрюю, що якщо між будь-якими символами є пробіл, у вас виникла помилка.
Дейл Андерсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.