Wie steuere ich einen Upstart-Sitzungsjob über SSH?

Wie steuere ich einen Upstart-Sitzungsjob über SSH?

Ich habe eine ganze Reihe von Upstart-Sitzungsjobs, die unter anderem Tor, einen Entwicklungs-Webserver usw. starten. Ich kann die initctlBefehle und ihre Abkürzungen problemlos verwenden, wenn ich über die GUI beim System angemeldet bin. Über SSH zeigt jedoch kein Upstart-Befehl auch nur den geringsten Hinweis darauf, dass er die Sitzungsjobs kennt. Also:

$ cat ~/.config/upstart/tor9050.conf
description "Tor on port 9050"
start on desktop-start
stop on session-end

respawn

expect daemon
exec /usr/sbin/tor -f /home/muru/.torrc9050
$ status tor9050
status: Unknown job: tor9050
$ pgrep -fa 9050
31096 /usr/sbin/tor -f /home/muru/.torrc9050

Wie Sie sehen, funktioniert der Sitzungsjob einwandfrei und status tor9050würde die erwartete tor9050 start/running, process 31096Ausgabe anzeigen, wenn ich bei der GUI angemeldet wäre.

Also: Wie kann ich den Status eines Upstart-Sitzungsjobs über SSH abrufen und ihn anderweitig steuern?

Antwort1

Eine Möglichkeit, die ich als umständlich empfinde, ist gegeben indas Upstart-Kochbuch (4.3.1.1: Einer Sitzung beitreten)Sie müssen Folgendes einstellen UPSTART_SESSION:

export XDG_RUNTIME_DIR=/run/user/$(id -u)
export UPSTART_SESSION=$(initctl list-sessions | awk '{print $2; quit}')

Danach funktioniert es einwandfrei:

$ status tor9050                                                             
tor9050 start/running, process 31096

verwandte Informationen