0

この回答で提供されているソリューションを模倣して、プロセスを見つけて強制終了し、入力引数で指定されたマシンのリストに ssh して目的のプロセスを強制終了する次のスクリプトを開発しました。

for node in "$@"; do
  ssh $node "kill $(ps aux | grep '[s]omeprocess' | awk '{print $2}')"
done

$2で使用される変数awk '{print $2}'は、 によって渡される 2 番目のパラメータである必要がありますgrep [s]omeprocess。ただし、スクリプト全体の 2 番目の入力引数が代わりに使用されているようです (この部分は間違っていますか)。前の操作awk '{print $2}'で渡された 2 番目のパラメーターを実際に取得する方法を知ることができますか? grepまたは、複数のマシンにまたがるプロセスを見つけて強制終了するより良い方法はありますか? ありがとうございました!

4

1 に答える 1

2

$(ps ..)とは$2、サーバー側ではなく、クライアント側で展開されます。それらをエスケープする必要があります:

ssh $node "kill \$(ps aux | grep '[s]omeprocess' | awk '{print \$2}')"

ただし、ps を grep する代わりに、のように を使用する必要がありpkillますpkill someprocess

于 2013-08-04T03:21:22.497 に答える