Как отладить службу, которая «вызывает сбой» в Upstart (в данном случае — в Supervisor)

Как отладить службу, которая «вызывает сбой» в Upstart (в данном случае — в Supervisor)

Я работаю под Ubuntu 14.04. У меня настроено несколько служб для запуска при загрузке, одна из которых — Supervisor. Я загружаюсь на уровне запуска 2, поэтому все службы /etc/rc2.d/должны запускаться при загрузке.

/etc/rc2.d/S20supervisorзапускает скрипт запуска супервизора в /etc/init.d/supervisor, как и положено. Я вижу, что скрипт выполняется в /var/log/boot.log. Каждый скрипт, который должен запускаться после него, не запускается. Это как если бы скрипт супервизора "вырубал" Upstart.

Если я редактирую S20supervisorв S10supervisor, это заставляет супервизор выполняться первым, и больше ничего не выполняется. После этого супервизор работает нормально.

Если я редактирую S20supervisorв s99supervisor, это заставляет супервизор выполняться последним, а все остальное выполняется. После этого супервизор работает нормально.

Итак, похоже, что служба запускается без проблем, но по какой-то причине Upstart зависает и не выполняет никаких скриптов после скрипта супервизора. Почему?

Обратите внимание, что мне удалось запустить Supervisor вручную без проблем sudo service supervisor start, хотя и со следующим выводом:

$ sudo service supervisor start Starting supervisor: 2017-05-20 00:14:04,435 CRIT Supervisor running as root (no user in config file) 2017-05-20 00:14:04,435 WARN Included extra file "/etc/supervisor/conf.d/graphite.conf" during parsing 2017-05-20 00:14:04,450 INFO RPC interface 'supervisor' initialized 2017-05-20 00:14:04,450 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2017-05-20 00:14:04,450 INFO supervisord started with pid 4462 2017-05-20 00:14:05,455 INFO spawned: 'statsd' with pid 4465 2017-05-20 00:14:05,458 INFO spawned: 'carbon-cache' with pid 4466 2017-05-20 00:14:05,464 INFO spawned: 'graphite-webapp' with pid 4467 2017-05-20 00:14:06,635 INFO success: statsd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-05-20 00:14:06,635 INFO success: carbon-cache entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-05-20 00:14:06,635 INFO success: graphite-webapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

решение1

Supervisor работает на переднем плане, а не в фоновом режиме, поэтому скрипт Upstart не аварийно завершает работу: он зависает, поскольку Supervisor сохраняет контроль над потоком.

Решением будет заставить Supervisor перейти в фоновый режим после запуска, но я опубликую более подробную информацию, как только действительно выполню исправление.

Связанный контент