Проблемы с выскочившим скриптом в ~ / .init

Я экспериментирую с запуском Sonar на своем компьютере с Linux. Я хотел, чтобы он запускался автоматически при запуске коробки, но все в порядке, чтобы он работал как я.

Я создал «~ / .init / sonar.conf» со следующим простым содержимым:

description "Sonar server"
start on startup
respawn
chdir ~/apps/sonar-3.2/bin
exec ~/apps/sonar-3.2/bin/linux-x86-64/sonar.sh start

Я прочитал, что Upstart не настроен для пользовательских заданий по умолчанию, поэтому я отредактировал »/ etc /dbus-1/system.d/Upstart.conf ", закомментируя существующий элемент" "и заменяя его следующим:

<policy context="default">
  <allow send_destination="com.ubuntu.Upstart" send_interface="org.freedesktop.DBus.Introspectable"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="org.freedesktop.DBus.Properties"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="com.ubuntu.Upstart0_6"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="com.ubuntu.Upstart0_6.Job"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="com.ubuntu.Upstart0_6.Instance"/>
</policy>

Когда я запускаю сонар, я начинаю: Job не смог начать". Я также сделал «список initctl | grep sonar» и получил «сонар стоп / ожидание».

Как я могу устранить эту проблему дальше?

2
задан 26 September 2012 в 21:24

2 ответа

Вероятно, ваша проблема в том, что то, что вы считаете startup, не то, для чего выскочка использует это. Запуск - это одно из первых событий, генерируемых при загрузке сценария инициализации системы. Таким образом, вы можете упустить такие вещи, как сетевой стек и драйверы, файловые системы, почти все на самом деле. Внимательно перечитайте man-страницу о значении события запуска, а также о том, что запускается, также.

Вот процесс, который я использую для проверки и тестирования сервисов upstart.

Сначала проверьте вашу конфигурацию:

# silent if the config is valid    
initctl check-config sonar
# reload the configuration to pick up latest changes
initctl reload-configuration

Я также добавляю скрипт - он работает на startup - для переключения upstart в режим ведения журнала отладки:

sudo -s
cat <<EOCONF > /etc/init/upstart-debug.conf 
description "enable debugging of upstart from within"
author      "@dch__"
version     "0.1"

start on startup

task
exec initctl log-priority debug

Поскольку это задача, она запускается только один раз. В результате вы получите гораздо больше деталей в /var/log/dmesg - просто | grep init: для истории.

Для вашей конкретной выскочки я бы изменил следующее:

  • для обычных пользовательских демонов. Я запускаю start on started networking and filesystem, которая успешно работает на Quantal и Precise, но, вероятно, не на более ранних версиях.
  • использовать абсолютный путь, а не относительный.
  • проверьте, не разветвляется или демонизируется ли ваш скрипт sonar.sh, в этом случае вам, скорее всего, потребуется добавить expect fork или expect daemon в качестве строфы.
  • наконец, посыпьте либо emit ... строф, либо операторы shell echo here в ваших сценариях pre-exec и exec и проверьте этот вывод в соответствующих /var/log/upstart/sonar.log.
0
ответ дан 26 September 2012 в 21:24

Для Новомодного Пользователя Job после изменения конфигурации Upstart.conf: https://gist.github.com/bradleyayers/1660182 работал на меня.

  • протестированный на Ubuntu 12.04
  • мои (пользователь) задания находятся в ~/.init
  • никакой перезапуск после сохранения Upstart.conf не необходим

Относительно Вашего sonar.conf - start on startup является, вероятно, слишком ранним. start on desktop-session-start кажется более подходящим для пользовательских заданий.

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

0
ответ дан 26 September 2012 в 21:24

Другие вопросы по тегам:

Похожие вопросы: