Я пытаюсь использовать upstart, чтобы supervisord запускался автоматически при загрузке. Мой supervisord находится в виртуальной среде.
Я настроил его на работу в фоновом режиме с параметром -n, и он работает, если его запустить вручную, но отказывается запускаться при загрузке.
Следуя руководству здесь http://upstart.ubuntu.com/cookbook/#как-установить-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
Вот несколько вопросов:
* Есть ли идеи, почему он не запускается в фоновом режиме при загрузке?
* Правильно ли я определяю количество ветвей?
* Есть ли лучшие предложения по запуску supervisord с помощью upstart?
решение1
Ох, чувак...
Я начал этот путь отсюда:
Как автоматически запустить supervisord в Linux (Ubuntu)
и конкретно этот ответ
https://serverfault.com/a/115259/60345
"о, потрясающий выскочка для супервайзера.... нет проблем"
неа. Можно запустить supervisord вручную без проблем, но нельзя сделать так, чтобы он запускался автоматически при загрузке. Отладка выглядит так, как будто supervisord запускается, но затем мгновенно отправляет SIGTERM, чтобы убить себя. Не знаю, связано ли это с работой на переднем плане.
Вопрос выше изначально был задан, чтобы посмотреть, могу ли я запустить его с помощью expect fork или daemon (в чем я так и не разобрался)
8 часов моей жизни спустя я нахожу это
http://upstart.ubuntu.com/cookbook/#runlevels
по сути вы хотите, чтобы ваш файл конфигурации upstart выглядел следующим образом:
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]
Я хотел разместить этот ответ в другой теме, но она заблокирована =(