web-dev-qa-db-ja.com

Mac OS Xでのpgrepおよびpkillの代替?

Mac OS Xのpgrepおよびpkillコマンドに代わるものはありますか、または使用可能な他のコマンドを使用してそれらのエイリアスを作成する必要がありますか?

23
Eimantas

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

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

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

Homebrew を使用するOS X Lionの場合:

$ brew install proctools

これにより、pgreppkillおよびpfindがダウンロード、ビルド、およびインストールされます。

18
Joe Walp

MacOS 10.8以降では、pgreppkillがデフォルトで使用可能になっているので、もう代替は必要ありません。

11
Beat

Macで比較的最近のバージョンのBashを使用していると想定すると、独自のバージョンのpgrepを関数として記述し、それを.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)"
}
10

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

あなたは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
1
Jerry Saravia

これはpkillの私の解決策でした:

#!/bin/sh

for X in `ps acx | grep -i $1 | awk {'print $1'}`; do
    kill -9 $X;
done