Yarn topコマンドの対話型モードを終了できません。

Yarn topコマンドの対話型モードを終了できません。

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に終了するように指示します(コードブロックに条件がないため)。

関連情報