upstart - supervisord フォーク数 > 2 (起動時に supervisord を起動できません)

upstart - supervisord フォーク数 > 2 (起動時に supervisord を起動できません)

私は、起動時に supervisord が自動的に起動するように upstart を使用しようとしています。私の supervisord は仮想環境にあります。

-n パラメータを使用してフォアグラウンド モードで実行するように構成しましたが、手動で起動した場合は動作しますが、起動時に起動を拒否します。

こちらのガイドに従ってください http://upstart.ubuntu.com/cookbook/#フォークカウントを確立する方法

supervisord が 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 で supervisord を起動する方法について、より良い提案はありますか?

答え1

ああ、
ここからこの道を歩み始めたんだ:
Linux (Ubuntu) で supervisord を自動的に起動する方法
そして具体的にはこの答え https://serverfault.com/a/115259/60345

ああ、スーパーバイザーにとっては素晴らしい新興企業だ...問題ない

いいえ. supervisord を手動で問題なく起動できますが、起動時に自動的に起動することはできません。デバッグすると、supervisord が起動したように見えますが、すぐに SIGTERM が送信されて強制終了します。フォアグラウンドで実行されているためかどうかはわかりません。
上記の質問は、もともと、expect fork または daemon で実行できるかどうかを確認するためのものでした (これはわかりませんでした)

8時間後に私はこれを見つけた
http://upstart.ubuntu.com/cookbook/#runlevels

基本的に、upstart 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] での停止

ランレベル [!345] での停止

この回答を他のスレッドに投稿したかったのですが、ロックされています =(

関連情報