alternatives pgrep et pkill sur mac os x?

23

Existe-t-il des alternatives pgrepet des pkillcommandes sur Mac OS X ou dois-je simplement créer des alias pour eux en utilisant d'autres commandes disponibles pour moi?

Eimantas
la source

Réponses:

11

Vous pouvez utiliser MacPorts :sudo port install proctools

Voici le résultat de port search pgrep:

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)
Ricket
la source
3
proctools est également disponible via Homebrew
Andrew Marshall
@AndrewMarshall a raison. Pour l'essai homebrewbrew install proctools
CWD
18

Sur OS X Lion avec Homebrew :

$ brew install proctools

Cela télécharge, construit et installe pgrep, pkillet pfind.

Joe Walp
la source
Serait-il possible de construire une interface graphique pour fonctionner comme le fait xkill mais pour OSX
Jonas Oestman
11

Vous n'avez plus besoin d'alternative: depuis MacOS 10.8 pgrepet pkillsont disponibles par défaut.

Battre
la source
10

En supposant que vous utilisez une version relativement récente de Bash dans le Mac, vous pouvez écrire votre propre version de pgrepas, puis l'ajouter à votre .bashrcfichier:

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

quant à pkillvous pouvez utiliser ce qui suit:

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
la source
Je suis sur un Z Shell, bien qu'il ne devrait y avoir aucun problème à l'adapter.
Eimantas
1
ou / bin / kill $ (ps ax | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}') pour un pgrep plus fidèle (nom de processus uniquement, pas d'arguments. J'utilise / bin / kill par habitude parce que il faut de manière fiable plus d'un PID pour tuer. Il existe d'autres astuces, si vous contrôlez l'expression rationnelle pour ne jamais avoir à 'grep -v grep' - de cette façon, vous pouvez pkill greps!)
jrg
Je vous suggère de supprimer le functionmot clé, il est obsolète. Voir cet article
SiegeX
Tu es incroyable.
Bijan
2

Proctools inclut pgrepet pkillest disponible pour OpenBSD et OSX. Il n'a pas été mis à jour depuis un certain temps, mais il devrait quand même fonctionner (au moins sur OSX qui modifie rarement son ABI).

Gilles 'SO- arrête d'être méchant'
la source
Proctools ne compile pas bien avec Snow Leopard
1

vous pouvez essayer killall. Il tue les processus par leur nom. Tous les processus qui correspondent à la chaîne que vous transmettez sont supprimés.

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

Si tu fais

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

il vous montrera une liste des processus qui seraient tués comme ci-dessous.

kill -TERM 70836

Si vous voulez un signal différent, procédez comme suit

killall -9 processname
Jerry Saravia
la source
1

C'était ma solution pour pkill:

#!/bin/sh

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