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ń?

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)

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.


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.


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)"
}

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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.