
Existe uma maneira de iniciar um programa a partir de um terminal, que não seja "filho" do gerenciador de janelas (pe XFCE), em um gerenciador de janelas?
O programa executado deve ser desconectado do terminal (e da minha conexão atual com o servidor), para que continue ativo após o fechamento da sessão do terminal.
Um exemplo seria conectar-se via ssh (sem x-forward ou similar) a um servidor, iniciar um navegador, fechar a conexão. Sentado na frente do servidor e usando o navegador aberto recentemente, que ainda está em execução. desanexado da minha sessão ssh com um novo "proprietário" do gerenciador de janelas.
Responder1
Os métodos usuais para separar um processo do shell são:
execute em segundo plano usando
&
e peça ao shell para parar de rastreá-lo usandodisown
:$ xterm & $ disown
(ou
xterm & disown
)execute em segundo plano usando
&
e use anohup
ferramenta para evitar que ele seja eliminado:$ nohup xterm &
execute em segundo plano usando
&
e use double-fork para evitar que o shell o rastreie:$ (xterm &)
execute em segundo plano usando
setsid
:$ setsid xterm
(Tente (setsid xterm &)
se algumas opções não funcionarem.)
Responder2
xterm -e "bash -c \"./script.sh; exec bash\"" &
onde ./script.sh
pode ser apenas um comando.
Responder3
Faça login na máquina que executa o servidor X com SSH e execute:
DISPLAY=:0 xterm &
Você deve obter um xterm no seu display X e ele deve permanecer aberto mesmo quando você fechar a sessão SSH.
Os aplicativos X11 usam a DISPLAY
variável de ambiente para localizar o servidor X; o valor típico é :0
, o que significa que os aplicativos X11 devem se conectar a um servidor X local através do soquete de domínio Unix /tmp/X11-unix/X0
.
Os aplicativos iniciados dentro de uma sessão X herdam uma DISPLAY
variável de ambiente que aponta para o servidor X, mas os processos iniciados fora de uma sessão X (como um login SSH) não terão essa variável. É por isso que você deve configurá-lo explicitamente ao iniciar um aplicativo X11 a partir de um login SSH.