Содержание
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
обзавелся двумя новыми командами:
- show-config
- 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, происходит следующим образом:
- Добавить ключевое слово «
UpstartJob=y
» в файл «.service
». - Создать конфигурационный файл задачи с указанием в `start on` нового события «
dbus-activation
» с параметром, передаваемым сервису (например, «start on dbus-activation com.ubuntu.NattyService
»). - Убедиться, что «
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.