Continue ステートメント後に Bash スクリプトがハングする

Continue ステートメント後に Bash スクリプトがハングする

ここでは、複数のサーバーにリモートでSSHを接続し、これらのサーバーでプロセスが実行されていることを確認し、プロセスが完了するのを待ちます。

while read ip name
do
  process=alive
  while [[ "$process" == "alive" ]]
  do
    process=dead
    (if [ 1 -eq "$(echo "$(ssh ubuntu@$ip "top -b -n2 -d 0.5|grep Cpu|awk '{print \$2+\$4}'|tail -n1") > 1" | bc)" ];then
      echo "Process is running on $ip"
      process=alive
      sleep 10
      continue 
    else
      echo "Process is not running on $ip"
      echo "I run some other commands here"
    fi) &
  done
done < ips
wait `jobs -p`

"continue"ステートメントの後にコードが壊れています。

これが出力です

+ read ip name
+ process=alive
+ [[ alive == \a\l\i\v\e ]]
+ process=dead
+ [[ dead == \a\l\i\v\e ]]
+ read ip name
+ process=alive
+ [[ alive == \a\l\i\v\e ]]
+ process=dead
+ [[ dead == \a\l\i\v\e ]]
+ read ip name
++ jobs -p
++ bc
+ wait 31090 31091
+++ ssh [email protected] 'top -b -n2 -d 0.5|grep Cpu|awk '\''{print $2+$4}'\''|tail -n1'
++ bc
+++ ssh [email protected] 'top -b -n2 -d 0.5|grep Cpu|awk '\''{print $2+$4}'\''|tail -n1'
++ echo '20.7 > 1'
+ '[' 1 -eq 1 ']'
+ echo 'Process is running on 249.X.X.X'
Process is running on 249.X.X.X
+ process=alive
+ sleep 10
++ echo '14.6 > 1'
+ '[' 1 -eq 1 ']'
+ echo 'Process is running on 256.X.X.X'
Process is running on 256.X.X.X
+ process=alive
+ sleep 10
+ continue
+ continue

ベストアンサー1

stdin(ファイルips)読み取り停止sshに置き換えられました。ssh -n


望むより:man ssh

おすすめ記事