ich versuche, Upstart zu verwenden, damit Supervisord beim Booten automatisch gestartet wird. Mein Supervisord befindet sich in einer virtuellen Umgebung.
Ich habe es so konfiguriert, dass es mit dem Parameter -n im Vordergrundmodus ausgeführt wird. Beim manuellen Start funktioniert es, beim Booten lässt es sich jedoch nicht starten.
Befolgen Sie die Anleitung hier http://upstart.ubuntu.com/cookbook/#how-to-establish-fork-count
Ich stelle fest, dass supervisord 37-mal eine Aufspaltung durchführt.
> ~/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
Einige Fragen:
* Irgendwelche Ideen, warum es beim Booten nicht im Vordergrundmodus startet?
* Bestimmen Sie die Anzahl der Forks richtig?
* Irgendwelche besseren Vorschläge, wie man Supervisord mit Upstart startet?
Antwort1
oh Mann ...
ich bin von hier aus diesen Weg eingeschlagen:
So starten Sie supervisord automatisch unter Linux (Ubuntu)
und insbesondere diese Antwort
https://serverfault.com/a/115259/60345
"oh, toller Emporkömmling als Supervisor … neeeeein Problem"
Nein. Ich kann Supervisord problemlos manuell starten lassen, aber ich kann es nicht automatisch beim Booten starten lassen. Beim Debuggen scheint Supervisord zu starten, aber dann wird sofort ein SIGTERM gesendet, um sich selbst zu beenden. Ich weiß nicht, ob es daran liegt, dass es im Vordergrund läuft.
Die obige Frage war ursprünglich, ob ich es mit expect fork oder daemon ausführen kann (was ich nie herausgefunden habe).
8 Stunden meines Lebens später finde ich dies
http://upstart.ubuntu.com/cookbook/#runlevels
Sie möchten im Wesentlichen, dass Ihre Upstart-Konfigurationsdatei folgendermaßen aussieht:
description "supervisord"
start on (filesystem and static-network-up)
stop on runlevel [!2345]
respawn
exec /<path to>/supervisord -n -c /<path to>/supervisord.conf
besonders zu beachten:
stop on runlevel [!2345]
vs
stop on runlevel [!345]
Ich wollte diese Antwort im anderen Thread posten, aber dieser ist gesperrt =(