我有一个 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 时,优先使用 $() 而不是 ``。