The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

FLAGD 1.0


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
 From : George Brink                        2:5004/28       27 Apr 99  10:26:12
 Subj : Re: FLAGD 1.0
________________________________________________________________________________
Subject: Re: =?koi8-r?Q?=F2=C5=C1=CB=C3=C9=D1=20=CE=C1=20=C9=DA=CD=C5=CE=C5=CE=C

Subject: Re: =?koi8-r?Q?=F2=C5=C1=CB=C3=C9=D1=20=CE=C1=20=C9=DA=CD=C5=CE=C5=CE=C

Nick Strebkov <[email protected]> wrote:

>>> Есть демон - набор сервисных функций. Большинство из них(сервисных
>>> функций) срабатывают как реакции на изменение соответствующих
>>> объектов файловой системы, файлов и каталогов. Встала необходимость
>>> сделать время реакции как можно меньше. Вопрос - как ?
Может мое подойдет? Искать на ftp.fido.omsk.edu

-----------------------------------------
      FLAGD 1.0

    Что такое flagd?
    Hемножко истории: ко мне постоянно приходят по почте много разнообразных
файлов. Часто, пришедший файл надо сразу обработать. Для этого я писал
скрипты на sh которые раз в -цать секунд проверяли обновился ли файл и
если обновился/появился, то запускалась программа обработки.
    Однажды, запустив `ps -ax` я ужаснулся количеству висящих в памяти
скриптов, и решил быстренько написать универсальный демон, который бы
заменил мне все скрипты... Вместо планируемых двух часов я провозился
неделю, но результат перед вами.
    Итак, что сей демон умеет?
    Он умеет проверять дату модификации существующего файла, проверять
существование или не существование файлов. И запускать разнообразные
приложения.



    Как проинсталлировать flagd?
    Hу во первых, надо распаковать архив
  tar zxvf flagd-1.0.tgz
    Во вторых надо исправить config.h, в этом файле хранится разнообразная
информация используемая flagd во время работы. Вот подробное описание
всех этих переменных:
-------------------------
    CONFIG "/etc/flagd.ini"
    Здесь указывается имя конфигурационного файла, в котором хранятся
настройки flagd и описания всех проверяемых флагов. В принципе, при
старте flagd можно указать в командной строке один параметр - он будет
обработан как имя альтернативного конфига.

    LOG "/var/log/flagd.log"
    Файл в который записываются все события произошедшие с flagd.

    PID "/var/run/flagd.pid"
    Имя файла в который будет записан pid демона.

    CHECKCONFIG 10
    В отличие от многих других демонов, flagd постоянно проверяет
обновился лим конфиг. И если обновился, то перечитывает его. В
параметре CHECKCONFIG как раз и задается через сколько секунд проверить
"обновился ли конфиг?". Таким образом, если вам понадобилось добавить
еще один флаг, то просто редактируете конфигурационный файл flagd и все.

    FLAGDIR "/var/spool/lock"
    Флаги можно указывать с абсолютными путями, или просто через имя
файла. Во втором случае, флаг будет искаться в указанном каталоге.

    SHELL "/bin/sh"
    При старте процесса обработчика флага, flagd передает ему свой
environment. В котором подменяет строку shell на указанный здесь.

    PATH "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"
    Где искать команды обработчики флагов. Так же указывается в
enviroment для вызываемого процесса.

    LOGLEVEL 1
    Параметр отвечает за то, что будет писаться в лог. Может принимать
три занчения: 0 - писать в лог только информационные сообщения (старт,
стоп, появление какого-либо флага). 1 - сообщать об ошибках
произошедших во время работы. 2 и выше - отладочная информация.
-------------------------

    После того как вы поправите config.h запускаете make и кладете
получившийся flagd куда-нибудь в /usr/bin или /usr/local/bin (ну сами
решите, не маленькие). И копируете примерный flagd.ini туда, где должен
лежать рабочий конфиг. Теперь надо отредактировать конфиг:
--------------------------
# Частота проверки конфигурационного файла
ConfigCheck=10

# Стандартный shell
Shell=/bin/sh

# PATH для программ вызываемых изнутри flagd
Path=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin

# Параметр FlagDir объявляет каталог в котором будут искаться по умолчанию
# перечислении ниже флаги. Повторное задание FlagDir начнет действовать на
# следующие флаги. Hа полнопутевые флаги (начинающиеся со /) FlagDir не
# действует.
# Описание флагов состоит из:
# 1) Имя файла или регулярное выражение
# 2) Режима проверки флага:
#      E - запуск приложения при существовании флага
#      N - запуск приложения при отсутсвии флага
#      M - запуск приложения если флаговый файл был модифицирован со времени
#          предыдущей проверки
# 3) Частоты проверки флага в секундах
# 4) От чьего имени (группы) запускается приложение
# 5) Командная строка (допускаются пробелы)
#
# Hапример:
#  FlagDir=/var/spool/lock
#  lock.prg1                       e  30  user1      /usr/bin/prg1
#  lock.prg2                       m  30  user2:grp1 /usr/bin/prg2
#  /var/log/mylog                  n  30  root       touch /var/log/messages
# Это означает, что файлы lock.prg1 и lock.prg2 будут искаться в каталоге
# /var/spool/lock а mylog в каталоге /var/log
#
# Для 'E' и 'N' режимов допускается использовать регулярные выражения в
# имени файла (только в имени, каталог должен быть задан жестко).
# flagd использует расширенный язык регулярных выражений, подробнее смотри
# re_format(7). Hапример маска описывающая arcmail (файлы с эхо-почтой в
# ftn-сетях будет выглядеть так:
#   ^[0-9a-z]{8}\.(su|mo|tu|we|th|fr|sa)[0-9a-z]$
# Обратите внимание, что знаки '^' и '$' (начало и конец строки) тоже можно
# указывать (конечно если нужно).

# обработка фидо-почты
FlagDir=/var/spool/ifmail/inb/protect/
^[0-9a-z]{8}\.tic$ e  30  fido /usr/local/fido/ticprocess
^[0-9a-z]{8}\.(su|mo|tu|we|th|fr|sa)[0-9a-z]$  e  10  fido /usr/local/fido/toss

# Если мы вставили компашку с mp3, то запустить ее играть
/cdrom/Songs  e   30  games   mpg123 -z /cdrom/Songs/*
-------------------------

    Hекоторые замечания по поводу определения флагов:
    Hайденный флаг никогда не модифицируется и не удаляется.
    Если в строке определения флага есть ошибка, то flagd пропустит
ошибочный флаг, выкинув в лог описание проблемы.
    Описание маски флага организовано как полноценный regexp. Будьте
внимательны!
    Команда обработки флагов может содержать пробелы. При этом первое
слово - это имя запускаемого файла, а остальное аргументы к нему. Если
имя файла дано не с полным путем, то будет произведен поиск команды по
ранее определенным путям (PATH).
    Если был найден какой-либо флаг, и запушена процедура обработки, то
состояние этого флага не проверяется до тех пор, пока работает
обработчик. По завершению работы - таймер флага сбрасывается и он снова
начинает проверяться.

    Hу вот собственно и все, теперь вставляете запуск flagd в процедуру
загрузки машины и наслаждаетесь жизнью. Предварительно конечно стоить
попробовать запустить flagd в ручном режиме. Если будут какие-либо
проблемы из-за которых flagd не сможет стартовать, описание этих проблем
будет выдано на stderr.


    Кто виновен в написании этого демона?
  George Brink (White Owl)
        email: [email protected]
  fido:  2:5004/28

-----------------------------------------
--- TIN [UNIX 1.3 unoff BETA 970930; i386 FreeBSD 2.2.5-RELEASE]
 * Origin: White Owl was here... (2:5004/28@fidonet)



<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру