So debuggen Sie einen Dienst, der Upstart (in diesem Fall den Supervisor) zum „Absturz“ bringt

So debuggen Sie einen Dienst, der Upstart (in diesem Fall den Supervisor) zum „Absturz“ bringt

Ich verwende Ubuntu 14.04. Ich habe mehrere Dienste so konfiguriert, dass sie beim Booten ausgeführt werden, einer davon ist Supervisor. Ich boote in Runlevel 2, daher /etc/rc2.d/sollten alle Dienste beim Booten gestartet werden.

/etc/rc2.d/S20supervisorführt das Supervisor-Startskript /etc/init.d/supervisorwie vorgesehen um aus. Ich sehe, dass das Skript in ausgeführt wird /var/log/boot.log. Alle Skripte, die danach ausgeführt werden sollten, werden nicht ausgeführt. Es ist, als ob das Supervisor-Skript Upstart „zum Absturz bringt“.

Wenn ich bearbeite S20supervisor, S10supervisorwird zuerst der Supervisor ausgeführt und nichts anderes. Danach läuft der Supervisor normal.

Wenn ich bearbeite S20supervisor, s99supervisorwird der Supervisor zuletzt ausgeführt und alles andere wird ausgeführt. Danach läuft der Supervisor normal.

Der Dienst scheint also ohne Probleme zu starten, aber aus irgendeinem Grund bleibt Upstart hängen und führt nach dem Supervisor-Skript keine weiteren Skripts aus. Warum?

Als Hinweis: Ich kann den Supervisor problemlos manuell starten sudo service supervisor start, allerdings mit der folgenden Ausgabe:

$ sudo service supervisor start Starting supervisor: 2017-05-20 00:14:04,435 CRIT Supervisor running as root (no user in config file) 2017-05-20 00:14:04,435 WARN Included extra file "/etc/supervisor/conf.d/graphite.conf" during parsing 2017-05-20 00:14:04,450 INFO RPC interface 'supervisor' initialized 2017-05-20 00:14:04,450 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2017-05-20 00:14:04,450 INFO supervisord started with pid 4462 2017-05-20 00:14:05,455 INFO spawned: 'statsd' with pid 4465 2017-05-20 00:14:05,458 INFO spawned: 'carbon-cache' with pid 4466 2017-05-20 00:14:05,464 INFO spawned: 'graphite-webapp' with pid 4467 2017-05-20 00:14:06,635 INFO success: statsd entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-05-20 00:14:06,635 INFO success: carbon-cache entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-05-20 00:14:06,635 INFO success: graphite-webapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Antwort1

Supervisor läuft im Vordergrund statt im Hintergrund, sodass das Upstart-Skript nicht abstürzt: Es bleibt hängen, weil Supervisor die Kontrolle über den Thread behält.

Die Lösung besteht darin, den Supervisor nach dem Start in den Hintergrund zu versetzen. Weitere Einzelheiten werde ich jedoch veröffentlichen, sobald ich den Fix tatsächlich ausgeführt habe.

verwandte Informationen