부팅 시 Supervisord가 자동으로 시작되도록 upstart를 사용하려고 합니다. 내 상사는 가상 환경에 있습니다.
-n param을 사용하여 포그라운드 모드에서 실행되도록 구성했으며 수동으로 시작하면 작동하지만 부팅 시 시작을 거부합니다.
여기 가이드를 따라 http://upstart.ubuntu.com/cookbook/#how-to-found-fork-count
나는 감독자가 37번 포크를 한다는 것을 발견했습니다.
> ~/projects/bleh_app$ sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf &
[1] 5662
> ~/projects/bleh_app$ ps -ef | grep strace
root 5662 5447 0 21:02 pts/0 00:00:00 sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf
root 5663 5662 36 21:02 pts/0 00:00:03 strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf
bleh 5703 5447 0 21:02 pts/0 00:00:00 grep --color=auto strace
> ~/projects/bleh_app$ sudo killall -9 strace
[1]+ Exit 137 sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf
> ~/projects/bleh_app$ sudo egrep "\<(fork|clone)\>\(" /tmp/strace.log | wc | awk '{print $1}'
37
몇 가지 질문:
* 부팅 시 포그라운드 모드에서 시작되지 않는 이유에 대한 아이디어가 있습니까?
* 포크 수를 올바르게 결정하고 있습니까?
* Upstart로 감독을 시작하는 방법에 대한 더 나은 제안이 있습니까?
답변1
아 이런...
저는 여기서부터 이 길을 시작했습니다.
Linux(Ubuntu)에서 자동으로 감독자를 시작하는 방법
특히 이 답변
https://serverfault.com/a/115259/60345
"오 슈퍼바이저로서는 대단한 신생 기업입니다.... 문제가 없군요"
아니요. 문제 없이 감독자를 수동으로 시작할 수 있지만 부팅 시 자동으로 시작되도록 할 수는 없습니다. 디버깅은 Supervisord가 시작된 것처럼 보이지만 즉시 SIGTERM을 전송하여 자체 종료합니다. 포그라운드에서 실행되기 때문인지는 알 수 없습니다.
위의 질문은 원래 포크나 데몬을 사용하여 실행할 수 있는지 확인하기 위한 것이었습니다(이것은 전혀 파악하지 못했습니다).
내 인생에서 8시간 후에 이걸 찾았어
http://upstart.ubuntu.com/cookbook/#runlevels
기본적으로 시작 conf 파일이 다음과 같기를 원합니다.
description "supervisord"
start on (filesystem and static-network-up)
stop on runlevel [!2345]
respawn
exec /<path to>/supervisord -n -c /<path to>/supervisord.conf
특히 참고할 사항:
런레벨에서 중지 [!2345]
vs
런레벨에서 중지 [!345]
이 답변을 다른 스레드에 게시하고 싶었지만 잠겨 있습니다 =(