Não é possível iniciar um serviço (sudo) remotamente a partir do script e mantê-lo em execução

2

Eu tenho um serviço (tomcat) que precisa do sudo para ser iniciado. Eu fiz um script simples no servidor remoto em /root/bin/test.sh

#!/bin/sh
sudo service tomcat start
read

(O script também precisa fazer outras coisas, apenas simplificado para simplificar). Quando eu executo-o diretamente no servidor remoto, o tomcat é iniciado e continua em execução no servidor depois que eu me desconectar.

Quando eu o executo remotamente, o processo começa, (eu posso vê-lo quando pausado para a "leitura"), mas uma vez que o script termina, ele se foi. (enquanto pausado para a leitura, execute este comando localmente)

ps -ef | grep tomcat

Eu tentei várias combinações de nohup, screen e & nos comandos tanto na máquina local como no script test.sh da máquina remota, mas parece que não consigo funcionar.

ssh -t [email protected] "/root/bin/test.sh"
ssh -t [email protected] "nohup /root/bin/test.sh"
ssh -t [email protected] "nohup /root/bin/test.sh &"
ssh -t [email protected] "screen /root/bin/test.sh &"
    
por Greg Bernhardt 18.05.2012 / 18:22

1 resposta

0

Inicie uma sessão de tela em segundo plano e execute seu script nela. Isso funciona para mim com top que é interativo "como sudo".

ssh -l jaroslav  10.3.0.7 screen -dmS foobar
ssh -l jaroslav  10.3.0.7 screen -S foobar -X stuff top^M

# ^M means [return]
#ssh -l jaroslav  10.3.0.7 screen -S foobar -X stuff top
#ssh -l jaroslav  10.3.0.7 screen -S foobar -X stuff $'5'

# to resume
ssh -t -l jaroslav 10.3.0.7 screen -r -S foobar

Para ser honesto, esse é um modo inverso de iniciar um serviço, mas não sei exatamente por que o tomcat é encerrado quando você faz o ssh na caixa com ssh -t. Afinal, o serviço é executado em segundo plano, certo?

    
por 20.11.2012 / 17:42

Tags