pgrep und pkill Alternativen auf Mac OS X?

23

Gibt es Alternativen zu pgrepund pkillBefehle unter Mac OS X oder sollte ich nur Aliase für sie mit anderen für mich verfügbaren Befehlen erstellen?

Eimantas
quelle

Antworten:

11

Sie könnten MacPorts verwenden :sudo port install proctools

Hier ist das Ergebnis von port search pgrep:

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)
Ricket
quelle
3
Proctools ist auch über Homebrew erhältlich
Andrew Marshall
@ AndrewMarshall ist richtig. Für Homebrew versuchenbrew install proctools
CWD
18

Unter OS X Lion mit Homebrew :

$ brew install proctools

Diese Downloads, baut und installiert pgrep, pkillund pfind.

Joe Walp
quelle
Wäre es möglich, eine GUI zu erstellen, die so funktioniert, wie es xkill tut, außer für OSX
Jonas Oestman,
11

Sie brauchen keine Alternative mehr: seit MacOS 10.8 pgrepund pkillsind standardmäßig verfügbar.

Schlagen
quelle
10

Unter der Annahme, dass Sie eine relativ neue Version von Bash auf dem Mac verwenden, können Sie Ihre eigene Version von pgrepas function schreiben und diese dann zu Ihrer .bashrcDatei hinzufügen :

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

Was pkillSie betrifft, können Sie Folgendes verwenden:

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
quelle
Ich bin auf einer Z-Shell, obwohl es keine Probleme geben sollte, dies anzupassen.
Eimantas
1
oder / bin / kill $ (ps axe | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}') für eine treuere pgrep (nur Prozessname, keine Argumente. Ich verwende / bin / kill aus Gewohnheit, weil es braucht zuverlässig mehr als eine PID, um zu töten. Es gibt andere Tricks, wenn Sie die Regexp kontrollieren, um nie 'grep -v grep' zu müssen - auf diese Weise können Sie greps töten!)
jrg
Ich schlage vor, Sie entfernen das functionSchlüsselwort, es ist veraltet. Siehe diesen Beitrag
SiegeX
Du bist toll.
Bijan
2

Proctools enthält pgrepund pkillund ist für OpenBSD und OSX verfügbar. Es wurde eine Weile nicht mehr aktualisiert, sollte aber dennoch funktionieren (zumindest unter OSX, das sein ABI selten ändert).

Gilles 'SO - hör auf böse zu sein'
quelle
Proctools kompilieren nicht gut mit Snow Leopard
1

du könntest es mit killall versuchen. Es bricht Prozesse namentlich ab. Alle Prozesse, die mit der von Ihnen übergebenen Zeichenfolge übereinstimmen, werden abgebrochen.

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

Wenn Sie tun

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

Es wird Ihnen eine Liste von Prozessen angezeigt, die wie folgt beendet werden würden.

kill -TERM 70836

Wenn Sie ein anderes Signal wünschen, gehen Sie wie folgt vor

killall -9 processname
Jerry Saravia
quelle
1

Dies war meine Lösung für pkill:

#!/bin/sh

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