Como posso iniciar e executar um script remotamente via SSH?

2

Eu tenho o seguinte script, que inicia o X e lança um programa gráfico:

#!/bin/sh
#startGraphics.sh 
#Starts X and runs the graphics program

xinit /opt/common/graphics/bin/launchGraphics.sh &
sleep 10 ; 
echo "Successfully launched graphics program!"

Eu adicionei o sleep e o echo porque se eu simplesmente executasse o script, ele mataria o X e o programa gráfico imediatamente quando a sessão do SSH fosse fechada. O problema é que, embora o sono e o eco façam X e o programa gráfico iniciar, a sessão SSH não termina.

No entanto, se eu fizer SSH manualmente na máquina, depois executar o script startGraphics.sh e sair da sessão SSH assim que o servidor X e o programa forem iniciados, eles continuarão a ser executados e a sessão do SSH não seria interrompida.

O que estou fazendo de errado aqui? Qual é a maneira correta de fazer o que estou tentando, ou seja, como faço para iniciar o X remotamente com o programa gráfico e ter a sessão SSH completa sem desligar e sem o X terminar imediatamente?

Embora não seja relevante para o problema, aqui está o script launchGraphics.sh, apenas para o caso:

#!/bin/sh
#launchGraphics.sh
#Starts the graphics program. Requires X to be running
xrandr -s 1920x1050 ;
/opt/common/graphics/bin/graphics --position 0,0 --mode 1 &
/opt/common/graphics/bin/graphics --position 100,0 --mode 2 &
/opt/common/graphics/bin/graphics --position 300,0 --mode 3 
    
por stix 17.09.2015 / 21:50

1 resposta

2

O problema acabou sendo o redirecionamento de stdout (e presumivelmente stderr).

Adicionando > logfile.log 2 > & 1 & ao final da linha xinit, a sessão SSH fecha com segurança e a sessão X e os programas gráficos continuam sendo executados.

Assim, o startGraphics.sh final se parece com:

#!/bin/sh
#startGraphics.sh 
#Starts X and runs the graphics program

xinit /opt/common/graphics/bin/launchGraphics.sh > /dev/null 2>&1 &
sleep 10 ; 
echo "Successfully launched graphics program!"
    
por 17.09.2015 / 22:34

Tags