如何让ssh等到命令退出?

我有一个如下所示的脚本:

SERVER="RHT372 RHTl373 RHT374 RHTl375" case $1 in "stop") for SERVER in $SERVER do echo "================================================" echo Stopping $SERVER ssh root@$SERVER /var/tmp/stopServer.sh server1 done ;; 

我怎样才能使SSH等待命令完成,然后去下一个服务器,并发出相同的命令?

给你一个例子看看这个:

  #!/bin/bash (( $# != 1 )) && printf "%s\n" "Please provide one parameter"; exit 1; servers=( srv1 srv2 srv3 ) case $1 in "stop") for srv in "${servers[@]}" do hostAlive=$(ping -s 64 "$srv" -c 1 | grep packet | awk '{print $(NF-4)}') echo "==========" echo "Stopping $srv" [[ "$hostAlive" == "0%" ]] && ssh root@$srv '/var/tmp/stopServer.sh server1' done;; "start") for srv in "${servers[@]}" do echo "==========" echo "Starting $srv" ssh.... done;; *) echo "Not a valid option" exit 1;; esac 

只有前一个操作完成后,ssh命令才会运行。 如果您需要了解更多信息,请参阅wait命令。

一台服务器closures需要多长时间?

您可以在服务器closures之间使用sleep

用法:

 echo "Hi, I'm sleeping for 5 seconds..." sleep 5 echo "all Done."