alternatywy pgrep i pkill na Mac OS X?

23

Czy w systemie Mac OS X istnieją alternatywy pgrepi pkillpolecenia, czy powinienem po prostu tworzyć dla nich aliasy przy użyciu innych dostępnych dla mnie poleceń?

Eimantas
źródło

Odpowiedzi:

11

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)
Ricket
źródło
3
proctools są również dostępne przez Homebrew
Andrew Marshall,
@AndrewMarshall ma rację. Dla homebrew spróbujbrew install proctools
cwd
18

W systemie OS X Lion z Homebrew :

$ brew install proctools

Te pliki do pobrania, buduje i instaluje pgrep, pkilla pfind.

Joe Walp
źródło
Czy byłoby możliwe zbudowanie GUI tak, jak działa xkill, ale dla OSX
Jonas Oestman
11

Nie potrzebujesz już alternatywy: od MacOS 10.8 pgrepi pkillsą one dostępne domyślnie.

Bić
źródło
10

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)"
}
λ Jonas Gorauskas
źródło
Jestem na Z Shell, chociaż nie powinno być problemów z dostosowaniem tego.
Eimantas,
1
lub / bin / kill $ (ps ax | awk '5 $ ~ /' "$ 1" '/ {print $ 1}') dla bardziej wiernego pgrep (tylko nazwa procesu, nie argumenty. Używam / bin / kill z przyzwyczajenia, ponieważ niezawodnie potrzeba więcej niż jednego PID do zabicia. Istnieją inne sztuczki, jeśli masz kontrolę nad wyrażeniem regularnym, aby nigdy nie musieć „grep -v grep” - w ten sposób możesz pkill greps!)
jrg
Sugeruję usunięcie functionsłowa kluczowego, jest przestarzałe. Zobacz ten post
SiegeX
Jesteś niesamowity.
Bijan
2

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).

Gilles „SO- przestań być zły”
źródło
Proctools nie kompiluje się dobrze z Snow Leopard
1

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
Jerry Saravia
źródło
1

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
Ryan Thomas Correia Ortega
źródło