Cron израз генератор
Изградете cron израз поле по поле, прочитајте го со зборови, видете ги следните извршувања во која било временска зона и претворете го во systemd или Quartz.
Со едноставни зборови
Поставени се и денот од месецот и денот од неделата: класичниот cron се извршува кога СЕ совпаѓа ЕДНОТО ИЛИ ДРУГОТО (не и двете).
Градител
| Поле | Режим | Вредност |
|---|---|---|
| Секунда0–59 | ||
| Минута0–59 | ||
| Час0–23 | ||
| Ден од месецот1–31, L | ||
| Месец1–12 или JAN–DEC | ||
| Ден од неделата0–7 (0 и 7 = недела) или SUN–SAT |
Следни извршувања
Други формати
- crontab ред
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Како да изградите cron израз
- Внесете или залепете израз во Cron израз или изберете од Готови распореди. Макрата како
@dailyили@weeklyисто така се прифаќаат. - Или користете го Градител: за секое поле изберете Режим (Секој, На секои N, Одредени вредности, Опсег или Прилагодено) и пополнете ја Вредност. Изразот се освежува додека работите, а менувањето на изразот го освежува градителот.
- Штиклирајте Додади поле за секунди (6 полиња) ако вашиот распоредувач поддржува секунди.
- Прочитајте го распоредот Со едноставни зборови (описот е на англиски јазик), па проверете го списокот Следни извршувања. Изберете Временска зона на серверот што ја извршува задачата и Колку извршувања да се наведат.
- Копирајте го изразот со Копирај или користете еден од Други формати.
Грешките се објаснуваат поле по поле, на пример „Минута: 61 е надвор од опсегот (0–59)“, за да знаете точно што да поправите.
Петте cron полиња
Стандарден (Vixie) cron ред има пет полиња, потоа командата:
| Поле | Дозволени вредности |
|---|---|
| Минута | 0–59 |
| Час | 0–23 |
| Ден од месецот | 1–31 |
| Месец | 1–12 или JAN–DEC |
| Ден од неделата | 0–7 (0 и 7 се недела) или SUN–SAT |
Секое поле прифаќа * (секоја вредност), список 1,15, опсег 9-17, чекор */15 (на секои 15 единици) или опсег со чекор 0-30/10. Така */15 9-17 * * 1-5 значи на секои 15 минути од 9:00 до 17:45, од понеделник до петок.
Едно правило ги изненадува многумина: кога се ограничени и Ден од месецот и Ден од неделата, класичниот cron се извршува кога едното или другото се совпаѓа. 0 0 13 * 5 се извршува на секој 13-ти и на секој петок, не само на петок 13-ти. Алатката во тој случај прикажува предупредување.
Следни времиња на извршување и временски зони
Cron го користи часовникот на машината или поставката CRON_TZ/TZ на crontab. Списокот Следни извршувања се пресметува за временската зона што ја избирате, вклучувајќи ги промените на летното сметање на времето: при пролетната промена задача поставена на 2:30 може да се прескокне, а наесен може да се изврши еднаш или двапати во зависност од имплементацијата. За задачи што мора да се извршат точно еднаш, претпочитајте времиња надвор од 1:00–3:00 или користете UTC.
Vixie cron, systemd тајмери, Quartz и AWS
- systemd тајмерите користат
OnCalendar=со поинаква синтакса:Mon..Fri *-*-* 09..17:00/15:00. Условите за ден од неделата и датум се комбинираат со И, а не со ИЛИ, па некои cron изрази немаат точен еквивалент. - Quartz и Spring го ставаат полето за секунди прво и може да додадат поле за година. Едно од двете полиња за ден мора да биде
?, а Quartz ги нумерира деновите од неделата 1–7 почнувајќи од недела, за разлика од 0–6 кај cron. Алатката ги пишува деновите како имиња (MON-FRI) за да ја избегне таа стапица. - AWS EventBridge користи
cron(minutes hours day month weekday year): шест полиња, без секунди,?во едно поле за ден и година на крајот.
Стандардниот cron нема поле за секунди. Формата со 6 полиња и секунди ја поддржуваат многу библиотеки (node-cron, Spring, Quartz), но не и системскиот crontab.
Јазик на описот
Описот на распоредот со едноставни зборови за македонски јазик е на англиски. Датумите на следните извршувања се пишуваат според правилата на јазикот на страницата.
Често поставувани прашања
Како да извршувам задача на секои 5 минути?
Користете */5 * * * *. Задачата се извршува во минутите 0, 5, 10… од секој час.
Како да извршам задача на последниот ден од месецот?
Многу распоредувачи прифаќаат L во полето за ден од месецот: 0 18 L * *. Со обичен Vixie cron, извршувајте секојдневно на деновите 28–31 и во скриптата проверувајте дали утре е 1-ви.
Што прави @reboot?
Ја извршува командата еднаш, кога ќе стартува cron демонот. Нема распоред, па алатката не може да наведе времиња на извршување за него.
Зошто мојата задача не се извршува во прикажаното време?
Проверете ја временската зона на серверот, crontab на корисникот наспроти /etc/crontab (кој има дополнително поле за корисник) и PATH: cron стартува со минимална околина.
Дали 0 или 7 е недела?
И двете. Во полето за ден од неделата, 0 и 7 значат недела, 1 е понеделник, а 6 е сабота.
Поврзани алатки
- Претворач на Unix временска ознака Претворете Unix временски ознаки во секунди или милисекунди во читливи датуми во локално време, UTC и ISO 8601, а секој датум вратете го во epoch време.
- Претворач на временски зони Претворете датум и време од една временска зона во повеќе други одеднаш, со автоматско летно сметање на времето. Пребарајте кој било IANA град или зона.
- Chmod калкулатор Претворете Unix дозволи на датотеки меѓу полиња за избор, октален (755) и симболичен (rwxr-xr-x) запис, со setuid, setgid, sticky бит и готови chmod команди.