LINUX.ORG.RU
ФорумAdmin

настройка crontab


0

0

Возник такой вопрос: 1. Как оформить задание в crontab, которое запускалось бы каждую 45-ю минуту, т.е. в 0:45, 1:30, 2:15 и т.д. 2. Как оформить задание в crontab, которое запускалось бы каждую 6-ю неделю

Я уже голову сломал, может кто-нибудь сталкивался с подобным?

никак

Разве что для 1. написать 4-е правила

sdio ★★★★★
()

При указании диапазона можно пропускать некоторые его значения, указав шаг в форме / число Например: ``0-23/2" для поля Fa час означает запуск команды через два часа (по стандарту V7 пришлось бы указывать ``0,2,4,6,8,10,12,14,16,18,20,22 )" Шаг можно указывать также после звёздочки: ``каждые два часа " соответствует значению ``*/2" Звёздочка (`*' ) без шага соответствует полному диапазону значений.

http://www.opennet.ru/man.shtml?topic=crontab&category=5&russian=0

pavel38
()
Ответ на: комментарий от pavel38

Объясните, что будет означать запись:

*/45 * * * *

«Каждую 45-ю минуту, т.е. в 0:45, 1:30, 2:15 и т.д.»
или
«каждую 45-ю минуту каждого часа, т.е. в 0:45, 1:45, 2:45 и т.д.» ???

andrey-x
() автор топика
Ответ на: комментарий от andrey-x

«Каждую 45-ю минуту, т.е. в 0:45, 1:30, 2:15 и т.д.»

Именно, если я не ошибаюсь. А вообще надо попробовать. После обеда могу потестить и отписаться.

pavel38
()
Ответ на: комментарий от pavel38

Да я уже запустил тестирование, сам проверю! :) Но, блин, если первое требование можно разрешить 4 записями, то как быть с каждой 6-й неделей?!!!

andrey-x
() автор топика
Ответ на: комментарий от andrey-x

Но, блин, если первое требование можно разрешить 4 записями, то как быть с каждой 6-й неделей?!!!

Писать костыль. Не?

pavel38
()
Ответ на: комментарий от pavel38

Да похоже на то. Но так не хочется! Минут через 20 тестирование закончится, отпишусь по п. 1, а по п. 2 будем еще проверять

andrey-x
() автор топика
Ответ на: комментарий от andrey-x

Методом научного тыка установлено, что запись
*/45 * * * *
запускает задание каждую 45-ю минуту КАЖДОГО часа, т.е. 0:45, 1:45, 2:45
Видимо нет простого способа вызывать задание ЧЕРЕЗ КАЖДЫЕ 45 минут... Вот же блин!

andrey-x
() автор топика
Ответ на: комментарий от andrey-x

Видимо в cron проверка условия реализована, как деление по модулю. Если делится без остатка, значит запускать, не делится - не запускать

andrey-x
() автор топика
Ответ на: комментарий от andrey-x

*/45 * * * * запускает задание каждую 45-ю минуту КАЖДОГО часа, т.е. 0:45, 1:45, 2:45 Видимо нет простого способа вызывать задание ЧЕРЕЗ КАЖДЫЕ 45 минут... Вот же блин!

Звёздочка (`*' ) без шага соответствует полному диапазону значений.

pavel38
()

Вместо cron использовать at При запуске задания, сразу же выставлять следующий запуск а-ля at now + 45minutes или at now + 6 weeks

sdio ★★★★★
()
Ответ на: комментарий от pavel38

> Именно, если я не ошибаюсь

Ошибаетесь. Крон запускает задание */45 в каждую _минуту часа_, которая делится на 45.

Сколько минут в часе, которые делятся на 45 нацело?

Так что записи боелее чем */30 бессмысленны.

r_asian ★☆☆
()
Ответ на: комментарий от pavel38

0-23/45
Это получится каждый 45-й час!
Выход за диапазон представления - отказ от запуска... Не?
Сейчас запустил тестирование */62 * * * *, проверю - отпишусь, но мне кажется, что в этом случае задание будет запускаться каждую 0-ю минуту.

Звёздочка (`*' ) без шага соответствует полному диапазону значений.


Да я понимаю, но как в терминах cron выразить условие «каждую 45-ю минуту»?

andrey-x
() автор топика
Ответ на: комментарий от sdio

> ... использовать at ...

Видимо это лучший вариант!

andrey-x
() автор топика
Ответ на: комментарий от sdio

Вместо cron использовать at При запуске задания, сразу же выставлять следующий запуск а-ля at now + 45minutes или at now + 6 weeks

Все гениальное просто.

pavel38
()
Ответ на: комментарий от andrey-x

andrey-x> 0-23/45
Это получится каждый 45-й час!

Нет, это означает пропустить 45 значений диапазона 0-23, т.е. выполнится в 0:хх, потом якобы пропустит 45 значений (диапазон закончится раньше) и вернется к началу диапазона и снова выполнится в 0:хх

sdio ★★★★★
()
Ответ на: комментарий от sdio

Ага! Уже проверил! Строка */62 * * * * запускает задание каждую 0-ю минуту. Спасибо всем за участие в установлении истины и за предложения!

andrey-x
() автор топика
Ответ на: комментарий от sdio

Нет, это означает пропустить 45 значений диапазона 0-23, т.е.

выполнится в 0:хх, потом якобы пропустит 45 значений (диапазон

закончится раньше) и вернется к началу диапазона и снова выполнится в

0:хх


Скорее это получится не «пропустить», а «не найдено ни одного значения, кроме 0, которое делилось бы нацело на 45»

andrey-x
() автор топика
Ответ на: комментарий от sdio

Читай ман, а не выдумывай.


Он мне сегодня сниться будет!

andrey-x
() автор топика

Используй Fcron.

Fcron, в отличие от vixie-cron, позволяет запускать задание каждые N минут аптайма.

Camel ★★★★★
()
Ответ на: комментарий от HolyBoy

можно запускаться каждые 15 мин, а выполнять нужную задачу только на 3й заход =)

вот такой вот костыль

Kiteman
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.