У меня есть файл конфигурации 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 или что-то подобное, что может помочь мне отладить проблему.
Благодаря
Попробуйте:
/var/log/upstart/JOBNAME.log
Возможно, вы захотите преобразовать его в задачу во время отладки.
start on spatial-start task exec /spatial/server_init.sh
затем с консоли:
initctl emit spatial-start initctl status spatial-start
Хорошо, нашел один способ, но он работает только в том случае, если ошибка происходит в программе, выполняемой сценарием (и если эта программа, конечно, возвращает сообщения об ошибках), а не в самом Upstart, но это то, что мне нужно в этот случай. Я перенаправил вывод программы в файл журнала следующим образом:
exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1
Что касается другого, который я обнаружил, вы можете увеличить детализацию Upstart, поэтому, если мне это понадобится, я начну оттуда. [ 112]
Проверьте свою версию upstart по: initctl version или upstart политики apt-cache
Для всех версий Upstart до v1.4 значением по умолчанию для консоли было console none . Начиная с версии Upstart 1.4 значением по умолчанию является log 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.
Для получения дополнительной информации о консоли см. Ссылку ниже: