LINUX.ORG.RU

5 4 * * */3

At 04:05 on every 3rd day-of-week

Anoxemian ★★★★★
()

Так вам каждые три дня или возможно вы подразумеваете каждый третий день месяца?
Про летнее зимнее время я вообще не понял.

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

каждые три дня
т.е. если последний запуск был 30 августа, то следующий запуск должен быть 02 сентября
с переходом на зимнее - возможно это crond умеет

Vlad-76 ★★★★
() автор топика

Из cron каждый час, и свой фильтр, пропускающий к реальной задаче 1 из 72 запусков.

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

можно и каждые 72 часа
и фильтровать переход на зимнее время

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от anc

воткнул

0 1 */3 * * echo "START:`date +%Z\ %Y-%M-%d\ %H:%M`" >> /tmp/crond_start_every_third_day.log
видимо завтра первый раз будет запущено,смотрим.

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от futurama

ну вот, я же хотел каждый третий
*/3 - из этого мне было не ясно что есть первый день запуска? В момент втыкания - это первый день или день в котором совпадет условие 0 1

Vlad-76 ★★★★
() автор топика
Последнее исправление: Vlad-76 (всего исправлений: 1)

создавай файл, и раз в день проверяй что он не старше 3х дней. если старше - удаляй, выполняй задачу и делай файл заного

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

видимо так и придется сделать

Vlad-76 ★★★★
() автор топика
Ответ на: комментарий от anonymous

создавай файл, и раз в день проверяй что он не старше 3х дней. если старше - удаляй, выполняй задачу и делай файл заного

Не очень удачная последовательность. Поправлю предложенный вами вариант делаем touch при запуске скрипта и лучше с указанием времени. Что-то типа touch -a -m --date='07:01'

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от futurama

Минус вашего решения. Если по неосторожности запустить скрипт ещё раз, задачи будут плодиться.

anc ★★★★★
()

запускай раз в день и в скрипте проверяй, если кол-вол дней с начала Эпохи четное, то продолжаем работу.

if [[ $(( ( $(date +%s) / ( 24* 3600) ) % 2 )) == 0 ]]
then  echo OK
fi
Bers666 ★★★★★
()
Ответ на: комментарий от EXL

Ну положим Systemd Calendars.
Но там тоже */2 работает только в рамках одного регистра «Число месяца». Т.е. 31 и 1 число это числа одного рода.

Bers666 ★★★★★
()
Последнее исправление: Bers666 (всего исправлений: 2)
Ответ на: комментарий от Vlad-76

% значит остаток от деления
% 2 ----> % 3

P.S. также можно вызывать date -u чтоб исключить влияние всяких локальных таймзон с переводами времени
P.P.S и не запускать скрипт с 2 до 3 ночи, когда и происходит перевод времени, чтоб не пропустить запуск.

Bers666 ★★★★★
()
Последнее исправление: Bers666 (всего исправлений: 2)
Ответ на: комментарий от Bers666

Ну вот. И кто сказал что dcron не нужен (это не к вам конкретно). А в нем из каробки без костылей можно забубенить.

anc ★★★★★
()

man systemd.timer

(Пригибается.)

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

ась?

Это два независимых действия

1. можно добавлять в отдельную очередь (at -q ...)

2. проверять есть ли уже задания в этой очереди перед добавлением нового

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.