Upstart был разработан Canonical, поэтому некоторое время он был реализацией init в Ubuntu; однако в современных установках Ubuntu теперь используется systemd. Upstart был создан для улучшения проблем с SysV, таких как строгие процессы запуска, блокировка задач и т. д. Событийно-ориентированная модель Upstart позволяет ему реагировать на события по мере их возникновения.
Чтобы узнать, используете ли вы Upstart, если у вас есть каталог /usr/share/upstart, это довольно хороший признак.
Задания (Jobs) — это действия, которые выполняет Upstart, а события (Events) — это сообщения, получаемые от других процессов для запуска заданий. Чтобы просмотреть список заданий и их конфигурацию:
pete@icebox:~$ ls /etc/init
acpid.conf mountnfs.sh.conf
alsa-restore.conf mtab.sh.conf
alsa-state.conf networking.conf
alsa-store.conf network-interface.conf
anacron.conf network-interface-container.conf
Внутри этих конфигураций заданий вы найдете информацию о том, как и когда запускать задания.
Например, в файле networking.conf может быть указано что-то простое, например:
start on runlevel [235]
stop on runlevel [0]
Это означает, что он начнет настраивать сеть на runlevel 2, 3 или 5 и остановит сеть на runlevel 0. Существует множество способов написания конфигурационного файла, и вы обнаружите это, просмотрев различные доступные конфигурации заданий.
Принцип работы Upstart заключается в следующем:
- Сначала он загружает конфигурации заданий из
/etc/init. - Как только происходит событие запуска (startup event), он запускает задания, вызванные этим событием.
- Эти задания создают новые события, а затем эти события запускают другие задания.
- Upstart продолжает делать это до тех пор, пока не завершит все необходимые задания.