[Назад] [Дальше] [Оглавление]

      daily [nocheck]

Модуль выполняет ежедневные действия:

  1. Выполняет персональные daily в каталогах пользователей, если они есть.

    Для того, чтобы выполнять ежедневно некоторые специфичные для конкретного пользователя действия можно поместить в домашнем каталоге этого пользователя исполняемый модуль с именем daily.

  2. Рассылает отчеты в соответствии с находящимися в домашних каталогах пользователей формами `daily.fm'. Формы могут быть созданы вручную или с помощью почтового интерфейса (модуль runqueue) самим пользователем.
  3. Выполняет заданныеs в конфигурационном файле services.cf ежедневные действия для всех видов сервиса.
  4. Преобразует статистику из .st-файлов в соответствии с прайс-листами и записывает ее в SQL базу данных. Смотрите модуль convertstat.
  5. Если не задан аргумент `nocheck' , то проверяет остатки на лицевых счетах пользователей. Проверки строятся на основе данных конфигурационного файла - `warn.cf' ( смотрите ниже). В случае, если остаток недостаточен, то пользователю отсылается с помощью генератора отчетов предупреждение и/или выполняется скрипт, определенный в конфигурационном файле.
  6. Рассылает с помощью генератора отчетов персональные отчеты пользователям, в домашних каталогах которых есть файл `daily.fm'.
  7. Запускает модуль monthly для выполнения ежемесячных действий. Запуск производится каждый день и модуль monthly сам решает когда ему надо отработать, а когда просто вернуть управление назад.
  8. Отсылает протокол происходивщих за день сбоев (если он есть) администратору сервера и перемещает его в каталог `backup'.
  9. Создает архивную копию некоторых каталогов сервера в каталоге `backup'.

Виды сервиса описываются в файле `services.cf', находящемся в домашнем каталоге сервера. Пример:

#имя    daily script            monthly script          .st files
#
mail    daily-mail              no                      mail.st
time    daily-time              no                      time.st
misc    no                      no                      misc.st

Это простой текстовый файл; как и в иных случаях, строки его начинающиеся с символа `#' и пустые строки игнорируются. В остальных строках должно быть как минимум четыре поля, разделенных пробелами и/или табуляциями:

имя_сервиса

Записанное английскими буквами условное название сервиса. В настоящей версии не несет никакой нагрузки, однако имеет смысл все-же давать сервисам больее или менее осмысленные имена - mail, time, cnews и т.п.

ежедневный_скрипт

Путь к программе, которая будет вызываться для этого вида сервиса ежедневно. Если в ней нет необходимости, то можно в этом поле вписать `no'. По умолчанию поиск программы происходит в каталоге с исполняемыми модулями сервера, затем в PATH.

Программа, указанная в этом поле должна произвести анализ статистики за сутки по обслуживаемому ей виду и сформировать в домашних каталогах пользователей файл `имя_сервиса.st' ( смотрите описание формата .st). Примером того, как это можно сделать служат модули daily-mail и daily-time

ежемесячный_скрипт

Путь к программе, которая будет вызываться для этого вида сервиса ежемесячно. Если в ней нет необходимости, то это поле можно опустить или вписать в нем `no'. По умолчанию поиск происходит в каталоге с исполняемыми модулями сервера, затем в PATH.

Задачей этой программы является подготовка обслуживаемого ей сервиса к следующему месяцу.

файлы статистики

Завершают описание сервиса одно или несколько полей, содержащие имена .st-фалов, использующихся для данного сервиса. В настоящей версии сервера файлы, указанные здесь используются только для перемещения их в архив модулем monthly. Имя файла не должно содержать пути - только имя относительно домашнего каталога пользователя.

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

Критерий, определяющий недостаточность остатка, названия отсылаемых форм и выполняемых программ определяются в конфигурационном файле `warn.cf'. Модуль daily читает сначала файл `warn.cf' в домашнем каталоге пользователя (если он есть), потом в домашнем каталоге сервера.

Строки файла, начинающиеся с символа `#' и пустые строки игнорируются. Первой значащей строкой файла должна быть строка, определяющая критерий недостаточности остатка. Ее формат таков:

      criterion    total() < 50000

Первым словом всегда идет ключевое слово `criterion', затем остаток строки занимает формула (смотрите ``Правила написания формул''). Если результатом вычисления формулы является "истина" (ненулевое значение), то считается, что остаток на счету данного пользователя недостаточен.

В случае, если необходимость послать пользователю предупреждение подтвердилась, модуль daily читает файл `.count' в домашнем каталоге пользователя, чтобы определить какое по счету предупреждение ему должно быть послано. Если такого файла нет, то он создается (если вручную поместить в этот файл отрицательную величину, то тем самым можно задать ``запас доверия'' пользователю). Затем, в конфигурации `warn.cf' производится поиск строки, первым словом которой записано наибольшее число, не превышающее количества отосланных предупреждений.

Пример конфигурационного файла `warn.cf'

# Примеры критериев:
#
# Если остаток с учетом расходов в текущем месяце меньше 50 тысяч
criterion       total() < 50000

# Если остаток на счету меньше 50000 или меньше среднего расхода за
# последние три месяца
###criterion    total() < max(50000,statistic(-.2,.)/3)

# Проверок делать не надо - обычно такой критерий бывает полезен лишь в
# персоналном файле
###criterion    0

# Обычное предупреждение
#
0               =warn.fm

# "Завтра Вы будете закрыты"
#
10              =warn-close1.fm

# Высылаем уведомление о закрытии и закрываем
#
11              =warn-close.fm          user-close


[Назад] [Дальше] [Оглавление]