LINUX.ORG.RU

Средствами только крона - никак, только если каждый четверг запускать скрипт-обертку, который будет дропать запуск основной команды, если прошло меньше двух недель

eagleivg ★★★★★
()

Как в баше считать не знаю, поэтому концепт:

0 0 * * 4 python -c 'import sys; import time; sys.exit((time.localtime().tm_mday - 1) // 7 % 2)' && do_cmd
baverman ★★★
()

из двух строчек (для русской локали - где в date есть строка 'Чтв')

# очистка временного файла 1-го числа месяца
0 0 1 * * :> ~/temp.txt
# запуск команды в 1 и в 3 четверг месяца, замените «echo START» на нужную команду
0 5 * * 4 RES=`date | grep -w Чтв >/dev/null ; echo $?`; echo $RES >> ~/temp.txt ; COUNT=`grep -w 0 ~/temp.txt| wc -l`; if [ $COUNT -eq «1» ] || [ $COUNT -eq «3» ] ; then echo START ; fi

можно во 2 или 4-ый четверги - можно сменить в коде если надо

x97Rang ★★★
()

Крон не умеет в сложные расписания. На помощь приходит bash. UNIX-Way же!

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

оно у тебя запустится с 8 по 14 и каждый четверг

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

С 29 декабря 2011 года до 7 января 2012 будет 2 четверга, один будет пропущен.

ТС хочет каждый 2ой четверг месяца, или каждые 2 недели? Если второе, пусть использует anacron и не путает людей неоднозначными условиями.

mydoom ★★★
()

Вероятно самое простое будет использовать

at

Вначале скрипта вставить установку следующего запуска

echo $0 | at now+14days

sdio ★★★★★
()

Если нужно каждые две недели, начиная с некоторой заданной даты:

0 0 * * * [ "$(( ( $(date +%s) - $(date -d 2011-11-15 +%s)) / 86400 % 14 ))" == "0" ] && /path/to/app
schizoid ★★★
()
Ответ на: комментарий от schizoid

Прелесть. А я даже не подумал задачу покрутить.

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

Так и и есть: задача выполняется в четверг, следующий четверг пропускается и в следующий четверг она выполняется снова и т.д. Попробую ваше решение, спасибо всем кто откликнулся!

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