escreve um bash scipt que ssh's em vários servidores e executa um script lá que inicia uma aplicação mas não morre quando ssh desconecta

1

Isto é o que meu script parece. Isso funciona porque inicia o aplicativo nos servidores remotos e eu posso ver os processos através do topo, mas quando o script termina, os processos morrem. Eu preciso de uma maneira de deixar os processos em execução nesses servidores remotos indefinidamente. Eu posso usar esse método para executar comandos em servidores remotos muito bem. É só quando tento executar um script no servidor remoto que inicia processos onde tenho o problema

#!/bin/bash
for HOST in $(cat servers.txt); do
   ssh user@$HOST nohup /opt/app.sh
done
#
    
por Tom 23.08.2017 / 20:34

2 respostas

4

Use screen nos hosts remotos:

for host in $(cat hostlist.txt); do
   ssh user@${host} 'screen -dmS MyProcess /path/to/job.sh'
done
    
por 23.08.2017 / 20:46
2

Considere o uso de pssh ou GNU paralelo para executar coisas nos computadores remotos.

Considere executar em cada máquina remota seus scripts usando batch ou at .

Você pode executar pssh -H host1 -H host2 batch -f remotescript.sh

Talvez um sistema de automação de distribuição distribuído como icecream possa ser útil também.

    
por 23.08.2017 / 20:51

Tags