新貴 -supervisord fork 計數 > 2(無法讓supervisord 在啟動時啟動)

新貴 -supervisord fork 計數 > 2(無法讓supervisord 在啟動時啟動)

我正在嘗試使用 upstart,以便supervisord 在啟動時自動啟動。我的主管位於虛擬環境。

我已將其配置為使用 -n 參數在前台模式下運行,如果手動啟動它可以工作,但拒絕在啟動時啟動。

請按照此處的指南進行操作 http://upstart.ubuntu.com/cookbook/#how-to-built-fork-count

我發現 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手動啟動沒有問題,但無法讓它在啟動時自動啟動。調試起來好像supervisord 啟動了,但隨後立即發送 SIGTERM 來殺死自己。不知道是否是因為在前台運行。
上面的問題最初是為了看看我是否可以使用 Expect fork 或 daemon 來運行它(我從未弄清楚)

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

特別值得注意的是:
stop on runlevel [!2345]

stop on runlevel [!345]

我想在另一個線程中發布這個答案,但它被鎖定=(

相關內容