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
, pkill
a pfind
.
Zakładając, że używasz stosunkowo nowej wersji Bash na Macu, możesz napisać własną wersję pgrep
jako funkcji, a następnie dodać ją do swojego .bashrc
pliku:
function pgrep() {
ps aux | grep $1 | grep -v grep
}
jak dla pkill
moż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 pgrep
i pkill
jest 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