最新のプログラムを除いて、実行中のプログラムのすべてのインスタンスを終了する方法

最新のプログラムを除いて、実行中のプログラムのすべてのインスタンスを終了する方法

私のスクリプトが引き続き新しいSSHプロセスを生成する問題があります。こんなことがあってはいけないということは分かりますが、時々古いものを掃除するのが好きです。

私がするなら:

ps -ef | grep "ssh" | awk '{print $2}'

実行中のSSHプロセスのすべてのPIDのリストを取得します。

最後に生成されたプロセス(PID番号が最も高いプロセス)を除くすべてのプロセスを終了したいと思います。

どうすればいいですか?

答え1

while [ $(pgrep -c ssh) -gt 1 ]
do
  pkill --oldest -f ssh
done

複数のプロセスがあるたびに、ssh最も古い(「最も最近開始された」)プロセスを終了します。 PID空間が囲まれている場合、または任意のPIDを使用している場合は、最新の開始が「最低PID」よりも優れた指標である可能性があります。

関連情報