Tenho alguns trabalhos de sessão Upstart que, entre outras coisas, iniciam o Tor, um servidor web de desenvolvimento, etc. Posso usar os initctl
comandos 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 tor9050
mostraria a tor9050 start/running, process 31096
saí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