Система инициализации Upstart

С 2014 года проект Upstart находится только в режиме обслуживания, никаких новых функций не разрабатывается. Настоятельно рекомендуется перейти на другую систему инициализации или systemd.

Upstart основанная на событиях замена традиционного демона init.

Первоначально демон Upstart генерирует событие startup

$ grep 'start on startup' /etc/init/*.conf
/etc/init/hostname.conf:start on startup
/etc/init/mountall.conf:start on startup

Примерно получается такая схема

Использование Upstart

  • Управление заданием
start и stop

Задания можно запускать и останавливать при помощи программ start и stop, размещенных в каталоге /sbin. Каждой из них необходимо передать в качестве параметров список заданий для обработки. Результаты своей работы обе программы предоставляют в поток стандартного вывода.

# start tty1
tty1 (start) running, process 7490 active
# stop tty1
tty1 (stop) running, process 7490 killed
status

Программа status позволяет, как видно из названия, узнать состояние, в котором находится задание.

# status tty1
tty1 (stop) waiting
# start tty1
tty1 (start) running, process 4418
# status tty1
tty1 (start) running, process 4418

Сначала выводится название задания, затем последняя операция, которая выполнялась над заданием (запуск/останов), текущее состояние и идентификатор процесса, если таковой имеется.

initctl list

Список всех заданий и их состояний на текущий момент можно получить при помощи команды initctl list.

# initctl list
control-alt-delete (stop)waiting
logd (start) running, process 2347
rc-default (stop) waiting
rc0 (stop) waiting
rc0-halt (stop) waiting
rc0-poweroff (stop) waiting
rc1 (stop) waiting
rc2 (stop) waiting
rc3 (stop) waiting
rc4 (stop) waiting
rc5 (stop) waiting
rc6 (stop) waiting
rcS (stop) waiting
rcS-sulogin (stop) waiting
sulogin (stop) waiting
tty1 (start) running, process 4418
tty2 (start) running, process 7367
tty3 (start) running, process 7368
tty4 (start) running, process 7369
tty5 (start) running, process 7370
tty6 (start) running, process 7371
initctl emit

При помощи это команды у вас есть возможность генерировать любое событие. Очень удобная штука при написании собственных заданий. Например, имеется задание:

on bounce exec echo --Bounced-- console output

Следующая команда заставит его выполниться

# initctl emit bounce
# --Bounced--
PQ VPS сервера в 28+ странах.