Linux 中启动服务后如何退出 for 循环

Linux 中启动服务后如何退出 for 循环

我有一个 for 循环,用于停止和启动大量开发服务器,下面就是一个例子。

for i in `cat hosts` ; do ssh $i -i .ssh/key.key -t sudo /etc/init.d/jboss-as start ; done

这将逐个连接到每个盒子并停止服务,并且我必须等待关闭服务(在本例中为“jboss”)的操作,然后才能连接到其他盒子。

有没有一种方法可以让我执行请求并退出而不等待它完成?

谢谢

答案1

ansible -i 主机 -k -m 服务 -a “名称=jboss-as 状态=已启动”

这就是业务流程编排工具的用途;)

答案2

正如 krisFR 建议的那样,在后台运行所有命令:

for i in $(cat hosts); do
    (ssh ${i} -i .ssh/key.key -t sudo /etc/init.d/jboss-as start) & 
done

注意:运行子 shell 时,优先使用 $() 而不是 ``。

相关内容