Como posso controlar um trabalho de sessão do Upstart por SSH?

Como posso controlar um trabalho de sessão do Upstart por SSH?

Tenho alguns trabalhos de sessão Upstart que, entre outras coisas, iniciam o Tor, um servidor web de desenvolvimento, etc. Posso usar os initctlcomandos e suas abreviações perfeitamente quando estou logado no sistema por meio da GUI. No entanto, através do SSH, nenhum comando Upstart mostra o menor indício de estar ciente dos trabalhos da sessão. Por isso:

$ 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

Como você pode ver, o trabalho da sessão está funcionando bem e, se eu estivesse logado na GUI, status tor9050mostraria a tor9050 start/running, process 31096saída esperada.

Então: como posso obter o status e controlar um trabalho de sessão Upstart por SSH?

Responder1

Uma maneira, que considero complicada, é dada emo Upstart Cookbook (4.3.1.1: Entrando em uma sessão). Você tem que definir UPSTART_SESSION:

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

Depois disso, funciona bem:

$ status tor9050                                                             
tor9050 start/running, process 31096

informação relacionada