Как отладить сервис, который "вылетает" Upstart (супервизор, в данном случае)
У меня работает Ubuntu 14.04. У меня есть несколько служб, настроенных для запуска при загрузке, один из которых является супервизором. Я загружаюсь на уровне выполнения 2, поэтому все службы в /etc/rc2.d/
должен быть запущен при загрузке.
/etc/rc2.d/S20supervisor
запускает скрипт запуска супервизора в /etc/init.d/supervisor
, как и положено. Я вижу, что скрипт выполняется в /var/log/boot.log
, Каждый скрипт, который должен запускаться после него, не запускается. Это как если бы сценарий супервизора "вылетал" Upstart.
Если я редактирую S20supervisor
в S10supervisor
, что заставляет супервизор выполняться первым, и больше ничего не выполняется. После этого супервизор работает нормально.
Если я редактирую S20supervisor
в s99supervisor
, что заставляет супервизор исполниться последним, а все остальное выполняется После этого супервизор работает нормально.
Таким образом, кажется, что служба запускается без проблем, но по какой-то причине Upstart блокируется и не выполняет никаких сценариев после сценария супервизора. Зачем?
Как примечание, я могу запустить супервизор вручную без проблем с 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 сохраняет контроль над потоком.
Решением будет заставить супервизор перейти в фоновый режим после запуска, но я опубликую более подробную информацию, как только я действительно выполню исправление.