alternativas pgrep e pkill no mac os x?

23

Existem alternativas pgrepe pkillcomandos no Mac OS X ou devo apenas criar aliases para eles usando outros comandos disponíveis para mim?

Eimantas
fonte

Respostas:

11

Você poderia usar o MacPorts :sudo port install proctools

Aqui está o resultado de port search pgrep:

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)
Ricket
fonte
3
proctools também está disponível via Homebrew
Andrew Marshall
@AndrewMarshall está certo. Para homebrew trybrew install proctools
cwd 29/03
18

No OS X Lion com Homebrew :

$ brew install proctools

Este download, constrói e instala pgrep, pkille pfind.

Joe Walp
fonte
Haveria possível construir uma GUI para o trabalho da maneira xkill faz, mas para OSX
Jonas Oestman
11

Você não precisa mais de uma alternativa: desde o MacOS 10.8 pgrepe pkillestá disponível por padrão.

Batida
fonte
10

Supondo que você esteja usando uma versão relativamente recente do Bash no Mac, você pode escrever sua própria versão de pgrepcomo function e adicioná-la ao seu .bashrcarquivo:

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

quanto a pkillvocê pode usar o seguinte:

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
fonte
Estou em um Z Shell, embora não deva haver problemas em adaptar isso.
Eimantas
1
ou / bin / kill $ (ps ax | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}') para um pgrep mais fiel (somente o nome do processo, não args. Eu uso / bin / kill por hábito, porque de maneira confiável, é necessário mais de um PID para matar.Existem outros truques, se você estiver no controle do regexp para nunca precisar 'grep -v grep' - dessa maneira, pode pkill greps!)
jrg
Sugiro que você remova a functionpalavra-chave, está obsoleta. Veja este post
SiegeX
Você é demais.
Bijan
2

O Proctools inclui pgrepe pkillestá disponível para o OpenBSD e OSX. Ele não é atualizado há algum tempo, mas ainda deve funcionar (pelo menos no OSX, que raramente modifica sua ABI).

Gilles 'SO- parar de ser mau'
fonte
O Proctools não compila bem com o Snow Leopard
1

você pode tentar matar tudo. Mata processos por nome. Quaisquer processos que correspondam à string que você passa são eliminados.

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

Se você fizer

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

mostrará uma lista de processos que seriam eliminados como abaixo.

kill -TERM 70836

Se você deseja um sinal diferente, faça o seguinte

killall -9 processname
Jerry Saravia
fonte
1

Esta foi a minha solução para pkill:

#!/bin/sh

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