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

8

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

sudo initctl start myconf

Если я запускаю его без команды sudo, я получаю ошибку error name = (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 или что-то подобное, что может помочь мне отладить проблему.

Спасибо

U2ros
источник
Иногда, если у вас есть chdirсценарий выскочки, и этот каталог не существует, журнал не будет записан, и вы получите загадочное сообщение:start: Job failed to start
knownasilya

Ответы:

13

Пытаться:

/var/log/upstart/JOBNAME.log

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

начать с пространственного старта

задача

exec /spatial/server_init.sh

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

initctl испускать пространственное начало
статус initctl пространственный старт
ppetraki
источник
Также даст ему шанс, спасибо. Я предполагаю, что это на самом деле выводит конкретные проблемы Upstart; это включает синтаксические ошибки в файлах conf также?
U2ros
Здесь stdout / err перенаправлен, поэтому лучше быть многословным.
ппетраки
1

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

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

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

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

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

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

Пример :

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

скрипт

exec /spatial/server_init.sh

конец сценария

Журнал консоли - Подключает стандартный ввод к / 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

zachlaniado
источник