Upstart система загрузки служб, приложений при запуске операционной системы. На микросервере Ubuntu 12.04 используется как основная. Также доступен старый способ SysV.
$initctl --version
На микросервере используется Upstart 1.4.
Понятия
Работа (Job)
Разновидности работы: Задача (Task) и Сервис (Service)
Задача - живет не долго, может завершаться быстро.
Служба - запущена постоянно, может перезапускаться при падении, но никогда сама, по своему хотению не останавливается, аналог демона.
Системные работы (работы по системе) расположены в каталоге /etc/init/ в конфигурационных файлах работ.
Пользовательские работы (задачи и м.б. сервисы) расположены в каталоге $HOME/.init/. Их надо включать спец. настройкой.
Включение поддержки пользовательских задач Upstart
Это необходимо.
Редактируется файл: /etc/dbus-1/system.d/Upstart.conf
В нем пару секций в которых присутствует root надо скопировать тут же и заменить на имя пользователя.
Конфигурации работ - это обычные, не исполняемые текстовые файлы, однако содержащие команды понимаемые демоном init. Расширение работы - .conf Имя совпадает с именем запускаемого демона, но не всегда.
Как создать свою задачу для Upstart
Создаем минимальный конфигурационный файл работы /etc/init/mytask.conf
# Тестовая задача по посылке сообщения в системный журнал
# дата изменения: 23 марта 2012
# сервер: микросервер
# зарезервированное слов "task" указывает что это задача, т.е. выполниться и все.
task
exec echo "hello" >> /var/log/syslog
Как создать свою службу для Upstart
Создаем минимальный конфигурационный файл работы /etc/init/myservice.conf
# Тестовая работа по запуску службы myservice
# дата изменения: 23 марта 2012
# сервер: микросервер
# подразумевается, демон службы существует в пути запуска и запускается в качестве демона
exec /usr/local/bin/myservice
# task - признак кратковременной работы, а не службы
# task
# способы получения PID главного процесса
#expect fork
#expect daemon
# Скрипт выполняющийся перед главным скриптом при запуске
# События от других работ, на которые реагирует работа
# События сигналы
Как преобразовывать существующие службы и их скрипты запуска, в работы для Upstart?
Основная трудность - это получение PID мастер процесса, чтобы Upstart мог управлять стартом остановкой главного процесса.
Если upstart не может узнать PID процесса, то все такие задачи и службы он переводить из состояния start в stop, при этом в списке процессов они присутствуют, но не управляются Upstart.
Для помощи Upstart в этом нелегком деле существуют термы:
expect fork
expect daemon
События
События асинхронные - сигналы (singal)
# initctl emit <event>
События синхронные - методы (method)
# initctl emit <event>
в качестве <event> может выступать строка текста
Примеры использования постепенно появляются у меня в блоге, например, iptv-видеорекордер, полностью сделан на Upstart. Подключение к Интернет, через L2TP также переведено на эту систему.
Ресурсы
- . http://upstart.ubuntu.com/cookbook/
$initctl --version
На микросервере используется Upstart 1.4.
Понятия
Работа (Job)
Разновидности работы: Задача (Task) и Сервис (Service)
Задача - живет не долго, может завершаться быстро.
Служба - запущена постоянно, может перезапускаться при падении, но никогда сама, по своему хотению не останавливается, аналог демона.
Системные работы (работы по системе) расположены в каталоге /etc/init/ в конфигурационных файлах работ.
Пользовательские работы (задачи и м.б. сервисы) расположены в каталоге $HOME/.init/. Их надо включать спец. настройкой.
Включение поддержки пользовательских задач Upstart
Это необходимо.
Редактируется файл: /etc/dbus-1/system.d/Upstart.conf
В нем пару секций в которых присутствует root надо скопировать тут же и заменить на имя пользователя.
Конфигурации работ - это обычные, не исполняемые текстовые файлы, однако содержащие команды понимаемые демоном init. Расширение работы - .conf Имя совпадает с именем запускаемого демона, но не всегда.
Как создать свою задачу для Upstart
Создаем минимальный конфигурационный файл работы /etc/init/mytask.conf
# Тестовая задача по посылке сообщения в системный журнал
# дата изменения: 23 марта 2012
# сервер: микросервер
# зарезервированное слов "task" указывает что это задача, т.е. выполниться и все.
task
exec echo "hello" >> /var/log/syslog
Как создать свою службу для Upstart
Создаем минимальный конфигурационный файл работы /etc/init/myservice.conf
# Тестовая работа по запуску службы myservice
# дата изменения: 23 марта 2012
# сервер: микросервер
# подразумевается, демон службы существует в пути запуска и запускается в качестве демона
exec /usr/local/bin/myservice
Этот минимальный файл пригоден для ручного запуска/остановки службы myservice
Шаблон содержимого файла конфигурации работ
# Работа по ...
# дата изменения: 23 марта 2012
# сервер: микросервер
# task - признак кратковременной работы, а не службы
# task
author "gimmor.blogspot.com"
description "шаблон работы для Upstart"
# manual - это работа только ручного управления
#manual
# Параметры передаваемые работе
# работа с параметрами запускается start job ARGUMENT1=1 ARG2=2 PARAMETER=3
# работа с параметрами запускается start job ARGUMENT1=1 ARG2=2 PARAMETER=3
instance $ARGUMENT1
instance $ARG2
instance $PARAMETER
instance $ARG2
instance $PARAMETER
# Параметры окружения
# Главный скрипт, может быть заменен термом exec
script
#
end script
# способы получения PID главного процесса
#expect fork
#expect daemon
# Скрипт выполняющийся перед главным скриптом при запуске
pre-start script
#
end script
# Скрипт выполняющийся после главным скриптом при запуске
post-start script
#
end script
# Скрипт выполняющийся перед остановкой
pre-stop script
#
end script
# События от других работ, на которые реагирует работа
#start on starting
#start on stoping
#stop on stoping
# События сигналы
start on мой-сигнал-старта
stop on мой-сигнал-стопа
stop on мой-сигнал-стопа
Как преобразовывать существующие службы и их скрипты запуска, в работы для Upstart?
Основная трудность - это получение PID мастер процесса, чтобы Upstart мог управлять стартом остановкой главного процесса.
Если upstart не может узнать PID процесса, то все такие задачи и службы он переводить из состояния start в stop, при этом в списке процессов они присутствуют, но не управляются Upstart.
Для помощи Upstart в этом нелегком деле существуют термы:
expect fork
expect daemon
События
События асинхронные - сигналы (singal)
# initctl emit <event>
События синхронные - методы (method)
# initctl emit <event>
в качестве <event> может выступать строка текста
Примеры использования постепенно появляются у меня в блоге, например, iptv-видеорекордер, полностью сделан на Upstart. Подключение к Интернет, через L2TP также переведено на эту систему.
Ресурсы
- . http://upstart.ubuntu.com/cookbook/
Комментариев нет:
Отправить комментарий