私はMacOS Xを使用しています。つまり、(たとえば)pgrep/pkillはありませんが、そのようなものが必要です(macports/finkも使用していません-homebrewが私のUnixパッケージツールです-したがって、それらのパッケージは機能しません)。
特定のパラメータ(基本的には、特定のリモートsshポート転送トンネル)を使用してsshのインスタンスを見つけて強制終了したいと思います。私が使用するコマンドは次のようなものです。
ps aux | grep ssh | grep remote-Host | grep port-forwarding-stmt
ただし、このgrepコマンドが実際に出力に表示されることがあるため、現在のコマンド文字列は記述されたとおりには役に立ちません。
これを行うために使用できるMacOS X用のツールはありますか?
文字列にgrepを追加しますが、invertオプションを使用してすべてのgrep出力要求を削除します。
ps aux | grep ssh | grep remote-Host | grep port-forwarding-stmt | grep -v grep
秘訣は、grepをだまして自分自身を見つけられないようにすることです。
... | grep "[s]sh" | ...
ps -a -o pid, command | awk '(/[s]sh/ && /remote-Host/ && /port-forwarding-stmt/){ print $1}'
述べられたアイデアのいくつかを組み合わせます。 -o
partは、pidとコマンドラインのみを出力することを指定し、print $1
pid部分のみを出力します。 [s]sh
それ自体を見つけられないようにします(いいトリックです!)
Awkも使用できます:
ps axuwww | awk '!/grep/ && /ssh/ && /remote-Host/ && /port-forwarding-stmt/'
Ps(1)の「www」引数は、短縮バージョンではなく、完全なコマンドラインを表示するように指示します。