Cronjob працює до запланованого часу, що може бути не так?


10

У мене внизу розміщений кронтаб, запланований на суботу, який припадає на дні 19-23, я не впевнений, чому він пробіг 20-го (п'ятниця). Будь-які здогадки?

00 21 19-23 * 6 <command>

1
Ви можете знайти деяке натхнення у /etc/cron.d/mdadmвикористанні на Ubuntu та Debian. Ось так воно проходить в першу неділю кожного місяця:57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
kasperd

спасибі kasperd, 0 18 * * 6 [date +\%d -le 07] && <task> добре працює для мене, де потрібно працювати в першу суботу кожного місяця.
симер

Відповіді:


16

Цей вираз Cron означає:

At 21:00 on the 19, 20, 21, 22 and 23rd of every month and every Saturday.

Тож чітко сказано, щоб cron запустився у п’ятницю 20-го. Це через:

When the schedule specifies both date and weekday, they're combined with a logical OR,
i.e. the job will run if current_minute == scheduled_minute 
&& current_hour == scheduled_hour && current_month == scheduled_month && 
(current_day == scheduled_date OR current_weekday == scheduled_weekday).

Ця інформація є з цього зручного інструменту Cron: http://crontab.guru/

Щоб ваша робота працювала в певні дні, коли субота, ви можете використовувати:

00 21 19-23 * * test $(date +%u) -eq 6 && command

Це рішення починається з дня на тиждень від хронобату проти дня місяця?


6
%Будьте обережні, що особливе значення має у cronjobs - це відокремлює stdin команди.
користувач1686
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.