serverAにbashスクリプトがあります。スクリプトはserverBにsshでアクセスし、Yarn topコマンドを実行してメトリックを抽出し、それをserverAのファイル(test.txt)に配置します。私が使用するコマンドは次のとおりです。
ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" | head -5 | grep -w 'Applications' | awk '{print "Pending_apps" "\t" $7}' >> test.txt
したがって、ここでの問題は、私のスクリプトが上記のコマンドを実行した後にインタラクティブモードに移行し、crtl + cを提供したとき、または手動でシグナル/コマンドを終了したときにのみ終了することです。
とにかく上記のコマンドを実行し、出力をtest.txtにリダイレクトした後、スクリプトは次のコマンドに移動する必要があります。つまり、コマンドプロンプトで上記のコマンドを実行した後、出力をtest.txtファイルにリダイレクトしてからコマンドプロンプト/ターミナルに戻す必要があります。
答え1
簡単な提案は、あなたが望むものを得るときにパイプを壊すことです。
ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" |
head -5 |
grep -w 'Applications' |
awk '{print "Pending_apps" "\t" $7; exit}' >> test.txt
これは、最初の入力行を受け取った後にawkに終了するように指示します(コードブロックに条件がないため)。