我正在嘗試使用 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]
我想在另一個線程中發布這個答案,但它被鎖定=(