私の使用例は、複数のサーバーでコマンドをリモートで実行することです。ホスト間に信頼を設定しました。
したがって、次のようなコマンドが 1 つあります: COMMAND 1:
for i in 11 12 13 14 15 16; do echo host-name-dev-$i; ssh -q host-name-dev-$i "nohup bash -c 'Place Ur command Here' > foo.out 2> foo.err < /dev/null &"; done
コマンド 2:
rm -rf /floderPath
これら2つを組み合わせると(コマンド1 +コマンド2)、正常に動作し、後続のフォルダーがすべてのホストから削除されます。
for i in 11 12 13 14 15 16; do echo host-name-dev-$i; ssh -q host-name-dev-$i "nohup bash -c 'rm -rf /floderPath' > foo.out 2> foo.err < /dev/null &";done
今、私は別のコマンドを持っています。このコマンドをすべてのホストで個別に実行すると、正常に動作し、すべての Java プロセスが強制終了されます。コマンド 3:
for i in `ps -ef | grep -v grep | grep java | awk '{print $2}'`; do kill -9 $i; echo "Process id $i is killed"; done
しかし、COMMAND 1 と COMMAND 3 を組み合わせると、まったく機能しません。ここでやろうとしているのは、すべてのホストですべての JAVA プロセスを強制終了することです。
for i in 11 12 13 14 15 16; do echo host-name-dev-$i; ssh -q host-name-dev-$i "nohup bash -c 'for j in `ps -ef | grep -v grep | grep java | awk '{print $2}'`; do kill -9 $j; echo "Process id $j is killed"; done' > foo.out 2> foo.err < /dev/null &";done
引用符が不適切に使用されている可能性があると推測できますが、さまざまな組み合わせを試しましたが、うまくいきませんでした。私はスクリプト作成の経験があまりないので、明らかなエラーについてはご容赦ください。