pgrep y pkill alternativas en mac os x?

23

¿Hay alternativas pgrepy pkillcomandos en Mac OS X o debería crear alias para ellos usando otros comandos disponibles para mí?

Eimantas
fuente

Respuestas:

11

Podrías usar MacPorts :sudo port install proctools

Aquí está el resultado de port search pgrep:

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)
Ricket
fuente
3
proctools también está disponible a través de Homebrew
Andrew Marshall
@ AndrewMarshall tiene razón. Para probar homebrewbrew install proctools
cwd el
18

En OS X Lion con Homebrew :

$ brew install proctools

Esto descarga, construye e instala pgrep, pkilly pfind.

Joe Walp
fuente
¿Sería posible construir una GUI para que funcione de la manera que xkill lo hace pero para OSX?
Jonas Oestman
11

Ya no necesita una alternativa: desde MacOS 10.8 pgrepy pkillestán disponibles por defecto.

Golpear
fuente
10

Suponiendo que está utilizando una versión relativamente reciente de Bash en la Mac, puede escribir su propia versión de pgrepcomo función y luego agregarla a su .bashrcarchivo:

function pgrep() {
    ps aux | grep $1 | grep -v grep
}

En cuanto a pkillusted puede utilizar lo siguiente:

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
fuente
Estoy en un Z Shell, aunque no debería haber problemas para adaptar esto.
Eimantas
1
o / bin / kill $ (ps ax | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}') para un pgrep más fiel (solo el nombre del proceso, no los argumentos. Utilizo / bin / kill por costumbre porque se necesita más de un PID para matar. Hay otros trucos, si tienes el control de la expresión regular para nunca tener que 'grep -v grep', ¡de esa manera puedes matar a greps!)
jrg
Le sugiero que elimine la functionpalabra clave, está en desuso. Ver esta publicación
SiegeX
Usted es maravilloso.
Bijan
2

Proctools incluye pgrepy pkillestá disponible para OpenBSD y OSX. No se ha actualizado en mucho tiempo, pero aún debería funcionar (al menos en OSX que rara vez modifica su ABI).

Gilles 'SO- deja de ser malvado'
fuente
Proctools no compila bien con Snow Leopard
1

podrías probar killall. Mata los procesos por su nombre. Todos los procesos que coinciden con la cadena que pasa se eliminan.

killall httpd ( kill all apache processes )
killall php ( kill all php process )

Si lo haces

killall -s man ( kill any manual page processes, if a user is using man [command]

le mostrará una lista de procesos que serían eliminados como a continuación.

kill -TERM 70836

Si desea una señal diferente, haga lo siguiente

killall -9 processname
Jerry Saravia
fuente
1

Esta fue mi solución para pkill:

#!/bin/sh

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