Как диагностировать ошибки Upstart?

У меня есть файл конфигурации Upstart в / etc / init, который запускается нормально, если я запускаю его вручную следующим образом:

sudo initctl start myconf

Если я запускаю его без команды sudo, я получаю имя ошибки = (unset ) ошибка, которая связана с привилегиями пользователя, но это не должно быть проблемой, когда задание инициализируется при загрузке системы, когда запускается Upstart, верно? (потому что это все управляется корнем).

Содержимое скрипта:

start on runlevel [2345]
stop on runlevel [^2345]

exec /spatial/server_init.sh

... где server_init.sh запускает сервер на основе скрипта Python. Когда я проверяю состояние скрипта сразу после входа в оболочку, он говорит остановка / ожидание. Я также попробовал файл conf с «start on net-device-up», но ничего не изменилось. Есть ли способ просмотреть системный журнал Upstart или что-то подобное, что может помочь мне отладить проблему.

Благодаря

8
задан 27 October 2012 в 16:06

3 ответа

Попробуйте:

/var/log/upstart/JOBNAME.log

Возможно, вы захотите преобразовать его в задачу во время отладки.

start on spatial-start

task

exec /spatial/server_init.sh

затем с консоли:

initctl emit spatial-start
initctl status spatial-start
0
ответ дан 27 October 2012 в 16:06

Хорошо, нашел один способ, но он работает только в том случае, если ошибка происходит в программе, выполняемой сценарием (и если эта программа, конечно, возвращает сообщения об ошибках), а не в самом Upstart, но это то, что мне нужно в этот случай. Я перенаправил вывод программы в файл журнала следующим образом:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

Что касается другого, который я обнаружил, вы можете увеличить детализацию Upstart, поэтому, если мне это понадобится, я начну оттуда. [ 112]

0
ответ дан 27 October 2012 в 16:06
  1. Проверьте, существует ли каталог upstart: / var / log / upstart (если нет, то создайте каталог)
  2. Проверьте свою версию upstart по: initctl version или upstart политики apt-cache

    Для всех версий Upstart до v1.4 значением по умолчанию для консоли было console none . Начиная с версии Upstart 1.4 значением по умолчанию является log log консоли .

  3. Добавьте консольный журнал в ваш upstart (до фазы сценария)
  4. Ваш журнал будет находиться по адресу: / var / log / upstart / "upstart-JOBNAME ".log

Пример:

консольный журнал

скрипт

exec /spatial/server_init.sh

конец скрипта

[ 1113] Журнал консоли - Подключает стандартный ввод к / dev / null. Стандартный вывод и стандартная ошибка связаны с одним концом псевдотерминала, так что любой вывод задания автоматически записывается в файл в каталоге / var / log / upstart / для системных заданий и $ XDG_CACHE_HOME / upstart / (или $ HOME /. cache / upstart /, если $ XDG_CACHE_HOME не установлен) для заданий сеанса.

Console none - Соединяет стандартный ввод задания, стандартный вывод и дескрипторы стандартных файлов ошибок с /dev/null.

Для получения дополнительной информации о консоли см. Ссылку ниже:

http://upstart.ubuntu.com/cookbook/#console-log

0
ответ дан 27 October 2012 в 16:06

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

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