编写一个 bash scipt,将 ssh 连接到多个服务器,并在那里运行一个脚本,该脚本启动应用程序,但在 ssh 断开连接时不会终止

编写一个 bash scipt,将 ssh 连接到多个服务器,并在那里运行一个脚本,该脚本启动应用程序,但在 ssh 断开连接时不会终止

这就是我的脚本的样子。它之所以有效,是因为它确实启动了远程服务器上的应用程序,我可以通过顶部看到进程,但是当脚本完成时,进程就会消失。我需要一种方法让进程在这些远程服务器上无限期地运行。我可以使用这种方法在远程服务器上运行命令。仅当我尝试在远程服务器上运行启动进程的脚本时,才会出现问题

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

答案1

screen在远程主机上使用:

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

答案2

考虑使用噗噗或者GNU并行在远程计算机上运行东西。

考虑在您的脚本使用的每台远程计算机上运行batch或者at

所以你可以跑pssh -H host1 -H host2 batch -f remotescript.sh

也许像这样的分布式构建自动化系统冰淇淋也可能有用。

相关内容