Upstart обновлен до версии 0.9.7-1. Новые возможности описаны ниже.
(оригинал документа)

Поддержка изолированного окружения

Upstart теперь относится к «chroot-aware». Если `initctl` запущен в chroot, то Upstart инициализирует демон вне chroot-окружения и будет обслуживать запросы для выполнения задачи в рамках изолированного окружения.

Базовая визуализация задачи/события

Upstart снабжён новым сценарием Python `initctl2dot`, который преобразует вывод новой команды `initctl show-config` в формате GraphViz. По умолчанию все файлы конфигурации задач анализируются и связи (между задачами и событиями) отображаются графически. Кроме того, можно указать перечень задач для отображения. Более полную информацию можно получить запустив «initctl2dot –help» или «man initctl2dot».

Новые комманды Initctl

initctl обзавелся двумя новыми командами:

  1. show-config
  2. check-config

Команда `show-config` отображает основные детали задачи, а именно информацию по параметрам `start on`, `stop on` и `emits`. Это полезно, так как позволяет пользователю увидеть как Upstart анализирует конфигурацию задачи. Команда `show-config` поддерживает опцию `–enumerate`, которая позволяет увидеть элементы комплексных элементов задач (среда выполнения и события). Эта опция используется базовой визуализацией, описанной выше.

Команда `check-config` полезна системным администраторам как инструмент, проверяющий, что все задачи теоретически способны запуститься/остановиться. Например, если конфигурационный файл задачи построен следующим образом:

  start on (A and (B or (starting C or (starting D or starting E))))

`check-config` с такой конфигурацией возвратит ошибку, если, например, ни одна из задач 'C', 'D' или 'E' не была доступна. Это говорит о том, что рассматриваемое задание никогда не сможет автоматически запуститься (так как условия запуска никогда не будут истиной). Подобные проверки выполняются и на событиях, так, если задачи 'C', 'D' и 'E' будут доступны, но события 'A' и 'B' не обьявлены как генерируемые какой-либо задачей, то 'check-config' сгенерирует ошибку. Если же никакие ошибки не обнаружены, то 'check-config' ничего не выводит на экран и возвращает нуль. Если ошибки обнаружены для задачи, то каждое условие, которое невыполнимо, будет выведено на экран с соответствующим сообщением.

Активация сервиса D-Bus

D-Bus версии 1.4.1-0ubuntu2 и выше позволяет сервисам D-Bus запускаться при помощи Upstart. Модификация существующих сервисов D-Bus, для совместимости с Upstart, происходит следующим образом:

  1. Добавить ключевое слово «UpstartJob=y» в файл «.service».
  2. Создать конфигурационный файл задачи с указанием в `start on` нового события «dbus-activation» с параметром, передаваемым сервису (например, «start on dbus-activation com.ubuntu.NattyService»).
  3. Убедиться, что «dbus-daemon» вызывается с параметром «–activation=upstart».

Параметр «manual»

Добавлен новый параметр конфигурации «manual». Если он указан, то все предыдущие параметры, такие как «start on», теряют силу и задача будет запускаться только вручную командой «initctl start» / «stop». Этот метод более практичен, чем переназначение файлов.

Переназначение файлов

Переназначенные файлы - это файлы, размещённые в каталоге конфигураций задач («/etc/init/») и заканчивающиеся на «.override». Эти файлы позволяют менять поведение задачи не изменяя оригинальный файл конфигурации. Файлы переназначения имеют такой-же синтаксис, как и файлы конфигурации задач («.conf»).

Например, сделать так, чтобы сервис никогда не запускался автоматически:

  echo manual >> /etc/init/myjob.override

Вернуть первоначальное поведение можно удалив файл переназначения.

Другой пример: изменить условие запуска задачи:

  echo "start on (starting job-A or event-B)" >> /etc/init/myjob.override

Обратите внимание, что файлы переназначения не обрабатываются, если не найден соответствующий файл конфигурации задачи.

Эффект удаления файла переназначения кроется в быстром возвращени оригинальной конфигурации задачи.

Мост для сокетов

В Upstart стал доступен socket bridge (upstart-socket-bridge), который позволяет задачам создавать соединения сокетов в процессе загрузки. Задача регистрирует своё желание установить соединение создав событие «`socket`» в параметрах запуска или останова:

  # Интернет сокеты
  start on socket PROTO=PROTO PORT=PORT ADDR=ADDR

  # Локальные или абстрактные сокеты
  socket PROTO=PROTO PATH=PATH

Например, задача запускать веб-сервер только тогда, когда к нему обратится первый клиент:

  start on socket PROTO=inet PORT=80

Для более подробной информации смотрите новые страницы руководства:

  • upstart-socket-event (7)
  • upstart-socket-bridge (8)

Прочее

  • Новая страница документации upstart-events (7) содержит обобщённую информацию по событиям Upstart.
  • Bash сценарий завершения включён в состав initctl.
  • Разработан новый сценарий init-checkconf, который позволяет пользователям проверять файлы конфигурации задач по отдельности. Это позволит убедиться в правильности работы сценария перед переносом его в «/etc/init/». Подробнее на странице помощи «init-checkconf -h» или «man init-checkconf».
  • Пакет «vim-runtime» из состава Vim теперь поддерживает синтаксис для конфигурационных файлов upstart.