BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 22 июн 2025, 17:42

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Вопросец по шедуллеру
СообщениеДобавлено: 13 май 2010, 00:04 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
Встала задача запускать одну из задач один раз в конце месяца ( т.е. в последний день месяца в 23 часа 59 минут)
В стандартном юниксовом crone для достижения данной задачи в 23 часа 59 мин каждый день запускается скрипт, который манипулирует date и cal , определяя последний -ли это день месяца.
Так как написать сиё на jBGB-shell мне не по силам, раздумываю на запуске одной и той-же задачи три раза, вот с такими параметрами ( для 2010 года ):
Код:
1,3,5,7,8,10,12   *   31   23   59
2         *   28   23   59
4,6,9,11      *   30   23   59

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

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросец по шедуллеру
СообщениеДобавлено: 13 май 2010, 10:51 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
так а можно же просто выставить число в шедулере и все и он будет только в это число срабатывать, а так же можно и время выставить

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросец по шедуллеру
СообщениеДобавлено: 13 май 2010, 14:10 
Не в сети
Клиент

Зарегистрирован: 21 май 2008, 10:54
Сообщения: 599
Откуда: 50-й рег.
Карма: 40
Я наверно плохо объяснил.
Как мне в шедуллере БЖБ изобразить аналогичные вещи ? :
Код:
59 23 * * *[ `date +%d` -eq `echo \`cal\` | awk '{print $NF}'` ] && myscript.sh


или

Код:
59 23 * * * [ `date -d tomorrow +%d` -eq '01' ] && myscript.sh


или

Код:
59 23 * * * [[ $(date +'%d') -eq $(cal | awk '!/^$/{ print $NF }' | tail -1) ]] && myscript.sh 1>/dev/null 2>&1


или
Код:
#!/bin/bash
#last-day-of-month.sh
TODAY=`/bin/date +%d`
TOMORROW=`/bin/date +%d -d "1 day"`
if [ $TOMORROW -lt $TODAY ]; then
        exit 0
fi
exit 1


(и в crontab:)

Код:
23 59 * * * last-day-of-month.sh && myscript.sh


???

_________________
"Все правые - в резерве!" (c) (translate.google.ru/#en/ru/all%20rigths%20reserved)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросец по шедуллеру
СообщениеДобавлено: 13 май 2010, 15:19 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
никак, можете только сделать 3 записи с одной задачей
1) для меняцев в которых 30 дней
2) для месяцев в которых 31 день
3) и для февраля


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросец по шедуллеру
СообщениеДобавлено: 13 май 2010, 21:33 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
а что за задача? а то ведь шедулер, ЕМНИМС, в 1-й час нового месяца обрабатывает предыдущий


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросец по шедуллеру
СообщениеДобавлено: 14 май 2010, 05:25 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
snark писал(а):
а что за задача? а то ведь шедулер, ЕМНИМС, в 1-й час нового месяца обрабатывает предыдущий

Так простите, у битела так же.
skn мне кажется вы ошибаетесь. Вы же сами писали
skn писал(а):
первого числа месяца, начисления абонплат в промежуток с 0 до 1 часа ночи, приводит к переобсчету абонплат за предыдущий месяц

Я так понял что так шедулер работает. Ели это только для абонплат? Или я вообще не чего не понимаю.

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросец по шедуллеру
СообщениеДобавлено: 14 май 2010, 05:57 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
тут суть в чем - БГБ-шный шедулер - это, в общем виде, гуйный викси крон ... но! в зависимости от того какая задача выполняется - работать это будет разному, взять к примеру те же самые абон. платы ... поэтому я и спросил что за задачу Вы хотите реализовать? а то Вы думаете одно и шедулер в точное время запускает Вашу задачу, а произойдет другое ... хотя в общем виде (органичение викси крона так обычно и обходится) - тупо запускаете задачу каждый день в 23:59 и уже в скрипте смотрите:
Код:
dateToday = <дата запуска>;
dateTomorrow = <dateToday + 1 день>;

if (dateTomorrow == 1) { // т.е. это 1-й день месяца
    <выполняем задачу>;
}

и все будет:
а) работать как часы
б) Вам не надо будет делать как сказал ув. skn, т.е. создавать 2 записи для каждого месяца (30 и 31 день), да еще и 2 записи для февраля (28 и 29 числа) ну или проверять февральскую запись на високосность


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопросец по шедуллеру
СообщениеДобавлено: 20 май 2010, 16:03 
Не в сети
Аватара пользователя

Зарегистрирован: 19 мар 2009, 16:15
Сообщения: 210
Откуда: Уфа
Карма: 27
snark писал(а):
Код:
dateToday = <дата запуска>;
dateTomorrow = <dateToday + 1 день>;

if (dateTomorrow == 1) { // т.е. это 1-й день месяца
    <выполняем задачу>;
}



Так лучше:
Код:
dateToday = new GregorianCalendar();
if( dateToday.getActualMaximum( Calendar.DATE ) != dateToday.get( Calendar.DATE ) )
    return; //если не последний день месяца, то уходим отсюда

<иначе выполняем задачу>;


Только вопрос по задаче остается открытым. Если нужно запустить (глобальный)скрипт, то это прокатит. Иначе придется вызов нужной задачи делать из скрипта.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.043s | 32 Queries | GZIP : On ]