Mac OS Xでのpgrepとpkillの代替手段?


23

Mac OS X には代替コマンドpgreppkillコマンドがありますか、それとも他のコマンドを使用してエイリアスを作成する必要がありますか?

回答:


11

MacPortsを使用できます:sudo port install proctools

結果はport search pgrep次のとおりです。

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)

3
proctoolsはHomebrew
Andrew Marshall

@AndrewMarshallは正しい。自作の場合brew install proctools
-cwd


11

MacOSの10.8以降:あなたはもう選択肢を必要としないpgreppkill、デフォルトで用意されています。


10

Macで比較的新しいバージョンのBashを使用していると仮定すると、pgrepas関数の独自のバージョンを記述して、それを.bashrcファイルに追加できます。

function pgrep() {
    ps aux | grep $1 | grep -v grep
}

用として、pkill次を使用することができます。

function pkill() {
    local pid
    pid=$(ps ax | grep $1 | grep -v grep | awk '{ print $1 }')
    kill -9 $pid
    echo -n "Killed $1 (process $pid)"
}

私はZシェルを使用していますが、これを適応させるのに問題はないはずです。
エイマンタス

1
または/ bin / kill $(ps ax | awk '$ 5〜/' "$ 1" '/ {print $ 1}')により忠実なpgrep(プロセス名のみ、引数ではありません。正規表現を制御して「grep -v grep」を実行する必要がない場合は、他のトリックもあります。その方法でgrepsを削除できます!)
jrg

functionキーワードを削除することをお勧めします。これは非推奨です。この投稿を
-SiegeX

あなたは素晴らしいです。
ビジャン

2

ProctoolsにはOpenBSDとOSXが含まれてpgrepおりpkillそれらが利用可能です。しばらく更新されていませんが、動作するはずです(少なくともABIをほとんど変更しないOSXでは)。


ProctoolsはSnow Leopardではうまくコンパイルされません

1

killallを試すことができます。名前でプロセスを強制終了します。渡した文字列に一致するプロセスはすべて強制終了されます。

killall httpd ( kill all apache processes )
killall php ( kill all php process )

もしあなたがそうするなら

killall -s man ( kill any manual page processes, if a user is using man [command]

以下のように強制終了されるプロセスのリストが表示されます。

kill -TERM 70836

別の信号が必要な場合は、次の操作を行います

killall -9 processname

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.