Use screen
nos hosts remotos:
for host in $(cat hostlist.txt); do
ssh user@${host} 'screen -dmS MyProcess /path/to/job.sh'
done
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
#
Use screen
nos hosts remotos:
for host in $(cat hostlist.txt); do
ssh user@${host} 'screen -dmS MyProcess /path/to/job.sh'
done
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.