Периодические процессы

За выполнение месячных и дневных периодически процессов отвечает программа /usr/ACP/libexec/periodic

Примеры использования

Дневной периодик

/usr/ACP/libexec/periodic daily

Дневные периодические процессы, система выполняет дневные периодические действия по всем модулям системы.

Порядок выполнения:

  • Установка кредитов

  • Обнуление скидок

  • Перенос должников по группам

  • Выполнение расписания

    • изменении тарифных планов

    • Установка статусов блокировки

    • выполнение других команд

  • Функции модулей

    • дневная абон. плата

    • управление оборудованием

  • Отправка E-mail отчётов администратору системы

  • Отправка E-mail предупреждений пользователям о израсходованном балансе

 


Месячный периодик

/usr/ACP/libexec/periodic monthly

Месячный периодический процесс. Выполнение месячных процессов системы по всем подключенным модулям

  • Функции модулей

    • месячная абон. плата

    • месячная распределённая абон. плата (снимается каждый день)

    • управление оборудованием

  • Отправка E-mail отчётов администратору системы

  • Отправка E-mail предупреждений пользователям о израсходованном балансе

  • Резервное копирование базы данных

Чтобы отключить создание бакапа при месячном периодике запускайте команду со следующими параметрами
Месячный периодик без бекапа

/usr/ACP/libexec/periodic monthly SKIP_MODULES=backup

Архивация базы

/usr/ACP/libexec/periodic backup

Выполнить резервное копирование 
При выполнении бекапа система пропускает таблицы:

ipn_traf_detail

s_detail

ipn_log_backup

ipn_unknow_ips

errors_log

_old _YYYY_MM_DD


Аргументы

BACKUP_IGNORE='table1,table2'Список игнорируемых таблиц

Бекап и востановление базы по файлам

Возникают ситуации когда нужно получить бекап таблиц с разбивкойпо файлам.

BY_TABLE=1
Включить режим бекапа по файлам
RESTORE=1Включить режим востановления. Система востанавливает файлы с каталога /usr/ACP/backup/_[поточная дата]
RESTORE_DBБаза для востановления

Запуск расписания принудительно

/usr/ACP/libexec/periodic daily SHEDULE=1 DATE=xxxx-xx-xx

Автоматическое выполнение

Вносим в cron периодические процессы /etc/crontab

 */5  *      *    *     *   root   /usr/ACP/libexec/billd -all
 1     0     *    *     *   root    /usr/ACP/libexec/periodic daily
 1     1     *    *     *   root    /usr/ACP/libexec/periodic monthly

Обратите внимание, что дневной периодический процесс желательно запускать в 00:00:00, а месячный через час 01:00:00. Это делается для того, чтобы успели отработать все переключения тарифных планов и другие действия планировщика заданий. Месячный периодик запускается каждый день так как он следит за месячной распределённой абонплатой, месячными периодическими снятиями с произвольными датами и делает бекап.

Аргументы программы

Дополнительные параметры

DATE=2005-10-01Дата, за которую нужно выполнить периодические процессы
NO_USERS_WARNINGSНе оправлять предупреждений пользователям о израсходованном депозите
MODULES=[modules_list,…]Выполнить периодический процесс только для определённых модулей системы
SKIP_MODULES=[modules_list]Не выполнять программу для определённых модулей системы
NO_ADM_REPORTНе оправлять администратору отчёт о работе системы
FNЗапускать только определённую функцию. Список функцый находиться в ACP/[module]/config
SKIP_FNПропускать запуск определенных функций. Список функцый находиться в ACP/[module]/config
SHEDULEВыполнить только расписания
SET_FULL_CREDITУстановка кредита абонентам на сумму всех услуг акаунта, для компаний на сумму всех услуг абонентов компании
FULL_CREDIT_PERIODУстановить время действия полного кредита в днях
LOGINВыполнить периодический процесс только для определённого логина или логинов, логины нужно указывать через запятую
DEBUG=[0..7]

Режим отладки 0-7

При уровне дебага выше 7 система показывает действия на выполнение но не производит начисление абонплаты

Логика работы при SCHEDULE=1


Фильтрация происходит по ТЕКУЩЕЙ ДАТЕ запуска периодика ($Y, $M, $D), а не по дате, на которую было запланировано выполнение!

Это означает, что если периодик запущен 07 числа, он будет искать задачи:

Запланированные на 07 число ЛЮБОГО месяца/года
ИЛИ задачи с D = * (любой день)
Что происходит с задачей на 05 число?

Задача, запланированная конкретно на 05 число:

НЕ БУДЕТ найдена при запуске 07 числа
НЕ БУДЕТ выполнена задним числом
Останется в системе до следующего 05 числа


Установка кредита на сумму всех услуг

Кредит устанавливается на сумму всех услуг предоставляемых абоненту.

Данный кредит устанавливается исходя из следующий критериев:

  • только активным абонента (статус акаунта: активно)

  • если поле кредит не содержит другого значения кредита

  • если сумма на счету меньше суммы общего кредита абонента

Для компаний кредит устанавливается в размере суммы всех используемых услуг абонентами компании.
По умолчанию кредит предоставляется на неограниченный срок. Если нужно установить срок кредита нужно использовать параметр FULL_CREDIT_PERIOD. При использовании параметра FULL_CREDIT_PERIOD дата начала кредита считается датой выполнения программы, если другое не указано в аргументах 
Пример использования
Установка кредита на 10 дней. Кредит будет начисляться в 0.00 1 числа каждого месяца.
/etc/contab

0	0	1	*	* root /usr/ACP/libexec/periodic SET_FULL_CREDIT FULL_CREDIT_PERIOD=10

Параметры

UIDВыполнить только для определённого UID
LOGINВыполнить только для определённого логина
COMPANY_IDВыполнить только для определённой компании. 
Только для компаний COMPANY_ID='>0'
DEPOSIT="<10"Фильтрация по депозитам для услуги полный кредит
GID="1;2;3"Фильтрация по группам для услуги полный кредит


Ротация логов

Система ротации логов АСР.

Производиться ротация всех файлов /usr/ACP/var/log/*.log


/usr/ACP/libexec/periodic rotate


  • Нет меток