И так, что умеет это чудо:
- Циклически запускать какое-либо приложение
- Запускать по некому расписанию
- Может потушить приложение, если оно не уложилось в определенное время
- Может для каждого приложения создавать свои логи
Вы скажите, что это можно все сделать и с помощью системных утилит, и Вы будете правы. Я его создавал для себя, чтобы не лазить во все эти системные утилиты. Разбираться с ними. Вот и родился этот велосипед.
Параметры для запуска:
- (update, info...) что сделать визору с приложением:
- update - ищет в каталоге конфигов новый конфиг
- upgrade - ищет в катологе изменившиеся конфиг
- info - подробная информация о заданиях визора
- status - текущее состояние задания
- restart - перезапустить задание
- delete - удаляет задание из визора
- -pпорт для cli (по умолчанию 20000)
- -Rобьем после которого логи приложения начнут ротацию и сжиматься(по умолчанию 50 Мбайт)
- -rколичество ротируемых файлов задания (по умолчанию 5)
Поместим визор в какой-нибудь каталог на пример: /opt/aa-z.ru/visor. Запустим программу. В Вашем каталоге должны появиться 2 рабочие директории - это log и jobs. Переходим в папку jobs и начинаем создавать конфигу заданий.
Описание конфига задания:
test.ini
[main]
name= короткое имя задания на английском
title= описание задания
cmd= команда, что запустить и с какими параметрами, если надо
workdir= Рабочая директория программы, если надо
stepcmd= количество выполнений (по умолчанию 0 - бесконенчно) ( не обязательный )
timeout= продолжить через n секунд (по умолчанию 0) ( не обязательный )
limitlog= размер лога, после чего будет его ротация (30M - размер в мегабайтах)
logdir= путь, где будут лежать логи этого задания ( не обязательный )
shell= в каком шеле запускать ( не обязательный )
timer= некое расписание, описание ниже ( не обязательный )
sleepkill= через сколько секунд завершить приложение, не дожидаясь его окончания( не обязательный )
Рассмотрим параметр конфига timer. У него есть 4 события: event, one_hour, one_day, one_month.
Также эти события можно комбинировать, указывая их описания в конфиге через запятую.
Их описание (формат):
- event - простое событие. Пример: event XXh XXm XXs * или в место звездочки интервал между часами через тире (9-18)
- one_hour - один раз в час в конкретную минуту. Пример: one_hour XXm
- one_day - один раз в день ( час и минуту). Пример: one_day XXh XXm
- one_day - один раз в день с интревалом ( час и минуту + день или дни через тире). Пример: one_day XXh XXm XXd или one_day XXh XXm XX-XXd
- one_month - один раз в месяц (день час минута). Пример: one_month XXd XXh XXm
Все создали. Теперь запускаем: ./visor &
- ./visor -s status nginx