我有一个bash脚本,可以通过SSH在远程计算机上运行许多任务。每个脚本都很长,因此我想同时作为后台任务运行它们。在继续之前,我还需要它们全部完成。我知道我可以为后者使用wait命令,但是当我坚持并最终使它成为后台任务时,所有命令都将停止工作。
通过停止工作,我的意思是脚本似乎没有运行,但否则主脚本仍会完成。
ssh root@machine1 'bash -s' < script1 my_parameter
ssh root@machine2 'bash -s' < script2 my_parameter
ssh root@machine3 'bash -s' < script3 my_parameter
wait
some_other_task
这对于Ubuntu 11.04来说对我来说很好用:
#!/bin/bash
ssh user@server1 <command.sh &
ssh user@server2 <command.sh &
ssh user@server3 <command.sh &
wait
echo end
command.sh的内容:
sleep 5
hostname
使用命令行参数,它变得更加复杂。您可以使用“这里文档”并set
设置$ 1 $ 2 $ 3。
#!/bin/bash
ssh -T root@server1 << EOF
#!/bin/bash
set -- $my_parameter1 $my_parameter2 $my_parameter3
$(cat script1)
EOF
ssh -T root@server2 << EOF
#!/bin/bash
set -- $my_parameter1 $my_parameter2 $my_parameter3
$(cat script2)
EOF
ssh -T root@server3 << EOF
#!/bin/bash
set -- $my_parameter1 $my_parameter2 $my_parameter3
$(cat script3)
EOF
wait
echo end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句