daily [nocheck]
Модуль выполняет ежедневные действия:
Для того, чтобы выполнять ежедневно некоторые специфичные для конкретного пользователя действия можно поместить в домашнем каталоге этого пользователя исполняемый модуль с именем daily.
`daily.fm'
. Формы могут быть созданы вручную
или с помощью почтового интерфейса (модуль
runqueue) самим
пользователем.
`warn.cf'
(
смотрите ниже).
В случае, если остаток недостаточен, то пользователю отсылается с помощью
генератора отчетов предупреждение и/или
выполняется скрипт, определенный в конфигурационном
файле.
`daily.fm'
.
`backup'
.
`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 |