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?

Antworten:



18

Unter OS X Lion mit Homebrew :

$ brew install proctools

Diese Downloads, baut und installiert pgrep, pkillund pfind.


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.


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

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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.