Upstart(이 경우 감독자)가 "충돌"하는 서비스를 디버깅하는 방법

Upstart(이 경우 감독자)가 "충돌"하는 서비스를 디버깅하는 방법

우분투 14.04를 실행하고 있습니다. 부팅 시 실행되도록 구성된 여러 서비스가 있는데 그 중 하나가 감독자입니다. 런레벨 2로 부팅하므로 부팅 시 모든 서비스가 /etc/rc2.d/시작되어야 합니다.

/etc/rc2.d/S20supervisor/etc/init.d/supervisor예상대로 에서 감독자 시작 스크립트를 실행합니다 . 에서 스크립트가 실행되는 것을 볼 수 있습니다 /var/log/boot.log. 그 이후에 실행되어야 하는 모든 스크립트는 그렇지 않습니다. 마치 감독자 스크립트가 Upstart를 "충돌"시키는 것과 같습니다.

S20supervisor을 편집하면 S10supervisor감독자가 먼저 실행되고 다른 것은 실행되지 않습니다. 그 후 Supervisor는 정상적으로 실행됩니다.

S20supervisor을 편집하면 s99supervisor감독자가 마지막으로 실행되고 다른 모든 항목이 실행됩니다. 그 후 Supervisor는 정상적으로 실행됩니다.

따라서 서비스가 문제 없이 시작되는 것처럼 보이지만 어떤 이유로 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가 스레드 제어를 유지하기 때문에 중단됩니다.

해결 방법은 감독자가 시작한 후 백그라운드로 이동하도록 하는 것이지만 실제로 수정 사항을 실행한 후에 자세한 내용을 게시하겠습니다.

관련 정보