我有一个脚本循环遍历主机列表,使用RSA密钥连接到每个主机,然后将输出保存到本地计算机上的文件 - 这一切都正常.但是,在每台服务器上运行的命令需要一段时间(约30分钟),并且有10台服务器.我想并行运行命令以节省时间,但似乎无法使其正常工作.这是现在的代码(工作):
for host in $HOSTS; do
echo "Connecting to $host"..
ssh -n -t -t $USER@$host "/data/reports/formatted_report.sh"
done
Run Code Online (Sandbox Code Playgroud)
我怎样才能加快速度呢?
你应该添加&到ssh调用的末尾,它将在后台运行.
for host in $HOSTS; do
echo "Connecting to $host"..
ssh -n -t -t $USER@$host "/data/reports/formatted_report.sh" &
done
Run Code Online (Sandbox Code Playgroud)
我尝试使用&将 SSH 命令发送到后台,但我放弃了这一点,因为在 SSH 命令完成后,脚本会对输出文件执行更多命令,而这些文件需要已创建。
使用&使脚本直接跳到这些命令,但由于输出文件还不存在而失败。但后来我了解了wait命令,它等待后台命令完成后再继续。现在这是我的有效代码:
for host in $HOSTS; do
echo "Connecting to $host"..
ssh -n -t -t $USER@$host "/data/reports/formatted_report.sh" &
done
wait
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2689 次 |
| 最近记录: |