Как отладить сервис, который "вылетает" 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 сохраняет контроль над потоком.
Решением будет заставить супервизор перейти в фоновый режим после запуска, но я опубликую более подробную информацию, как только я действительно выполню исправление.