【发布时间】:2020-10-29 02:57:14
【问题描述】:
我创建了一个 bash 脚本来连接到多个服务器并执行一个程序。每个 IP 的 ips 和数量应从结构如下的配置文件中读取:
127.0.0.1 10
127.0.0.1 1
127.0.0.1 3
等
j=$((0))
while IFS=' ' read -r ip quantity; do
echo "${ip} x ${quantity}";
for (( i = 1; i <= quantity; i++ ))
do
echo "ssh root@${ip} cd test/libhotstuff && ./examples/hotstuff-app --conf ./hotstuff.gen-sec${j}.conf > log${j} 2>&1"
ssh root@"${ip}" "cd test/libhotstuff && ./examples/hotstuff-app --conf ./hotstuff.gen-sec${j}.conf > log${j} 2>&1" &
j=$((j+1))
done
sleep 1
done < ips
我注意到如果执行时间过长,这个 while 循环就会中断。如果我在这里休眠 1 秒,它将在第一次执行后停止。如果我删除它,但内部循环花费的时间太长,则不会读取行的子集。
这里有什么问题?
【问题讨论】:
-
我不知道这是可能的 =D
-
BashFAQ 是天赐之物。另外,在编写代码之前值得阅读整个bash manual。你最终会节省时间和头痛。
-
我调整了它,使脚本更清晰,谢谢。但问题依然存在。
-
可能是我误解了“非交互式”的含义
-
与此相关的 BashFaq 是 BashFaq #89