Велосипед номер один - назвал я его Visor, скачать

И так, что умеет это чудо:

  1. Циклически запускать какое-либо приложение
  2. Запускать по некому расписанию
  3. Может потушить приложение, если оно не уложилось в определенное время
  4. Может для каждого приложения создавать свои логи

Вы скажите, что это можно все сделать и с помощью системных утилит, и Вы будете правы. Я его создавал для себя, чтобы не лазить во все эти системные утилиты. Разбираться с ними. Вот и родился этот велосипед.

Давайте теперь начнем его готовить.

Параметры для запуска:

  1. (update, info...) что сделать визору с приложением:
    1. update - ищет в каталоге конфигов новый конфиг
    2. upgrade - ищет в катологе изменившиеся конфиг
    3. info - подробная информация о заданиях визора
    4. status - текущее состояние задания
    5. restart - перезапустить задание
    6. delete - удаляет задание из визора
  2. -pпорт для cli (по умолчанию 20000)
  3. -Rобьем после которого логи приложения начнут ротацию и сжиматься(по умолчанию 50 Мбайт)
  4. -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.
Также эти события можно комбинировать, указывая их описания в конфиге через запятую.

Их описание (формат):

  1. event - простое событие. Пример: event XXh XXm XXs * или в место звездочки интервал между часами через тире (9-18)
  2. one_hour - один раз в час в конкретную минуту. Пример: one_hour XXm
  3. one_day - один раз в день ( час и минуту). Пример: one_day XXh XXm
  4. one_day - один раз в день с интревалом ( час и минуту + день или дни через тире). Пример: one_day XXh XXm XXd или one_day XXh XXm XX-XXd
  5. one_month - один раз в месяц (день час минута). Пример: one_month XXd XXh XXm

Все создали. Теперь запускаем: ./visor &

CLI
Предположим мы собрали nginx и хотим его запустить, создали конфиг для визора в нем параметр name назвали nginx.
  1. ./visor -s status nginx