Odpowiedzi:
Możesz użyć MacPorts :sudo port install proctools
Oto wynik port search pgrep:
proctools @0.4pre1 (sysutils)
pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)
brew install proctools
W systemie OS X Lion z Homebrew :
$ brew install proctools
Te pliki do pobrania, buduje i instaluje pgrep, pkilla pfind.
Zakładając, że używasz stosunkowo nowej wersji Bash na Macu, możesz napisać własną wersję pgrepjako funkcji, a następnie dodać ją do swojego .bashrcpliku:
function pgrep() {
ps aux | grep $1 | grep -v grep
}
jak dla pkillmożesz użyć następujących:
function pkill() {
local pid
pid=$(ps ax | grep $1 | grep -v grep | awk '{ print $1 }')
kill -9 $pid
echo -n "Killed $1 (process $pid)"
}
Proctools zawiera pgrepi pkilljest dostępny dla OpenBSD i OSX. Od jakiegoś czasu nie był aktualizowany, ale powinien nadal działać (przynajmniej na OSX, który rzadko modyfikuje swój ABI).
możesz spróbować killall. Zabija procesy według nazwy. Wszelkie procesy pasujące do przekazanego ciągu są zabijane.
killall httpd ( kill all apache processes )
killall php ( kill all php process )
Jeśli zrobisz
killall -s man ( kill any manual page processes, if a user is using man [command]
pokaże ci listę procesów, które zostałyby zabite jak poniżej.
kill -TERM 70836
Jeśli chcesz inny sygnał, wykonaj następujące czynności
killall -9 processname
To było moje rozwiązanie dla pkill:
#!/bin/sh
for X in `ps acx | grep -i $1 | awk {'print $1'}`; do
kill -9 $X;
done