pgrep dan pkill alternatif di mac os x?

23

Apakah ada alternatif pgrepdan pkillperintah pada Mac OS X atau haruskah saya membuat alias untuknya menggunakan perintah lain yang tersedia untuk saya?

Eimantas
sumber

Jawaban:

11

Anda bisa menggunakan MacPorts :sudo port install proctools

Inilah hasil dari port search pgrep:

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)
Ricket
sumber
3
proctools juga tersedia melalui Homebrew
Andrew Marshall
@AndrewMarshall benar. Untuk mencoba brew install proctools
minuman rumahan
18

Di OS X Lion dengan Homebrew :

$ brew install proctools

Ini mengunduh, membangun dan menginstal pgrep, pkilldan pfind.

Joe Walp
sumber
Mungkinkah membangun GUI berfungsi seperti halnya xkill tetapi untuk OSX
Jonas Oestman
11

Anda tidak memerlukan alternatif lagi: sejak MacOS 10.8 pgrepdan pkilltersedia secara default.

Mengalahkan
sumber
10

Dengan asumsi bahwa Anda menggunakan beberapa versi Bash yang relatif baru di Mac, Anda bisa menulis versi Anda sendiri pgrepsebagai fungsi dan kemudian menambahkannya ke .bashrcfile Anda :

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

Adapun pkillAnda dapat menggunakan yang berikut:

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
sumber
Saya menggunakan Z Shell, meskipun seharusnya tidak ada masalah dalam mengadaptasi ini.
Eimantas
1
atau / bin / kill $ (ps ax | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}') untuk pgrep yang lebih setia (hanya nama proses, bukan argumen. Saya menggunakan / bin / membunuh karena kebiasaan dibutuhkan lebih dari satu PID untuk membunuh. Ada trik lain, jika Anda mengendalikan regexp agar tidak perlu 'grep -v grep' - dengan begitu Anda bisa pkill greps!)
jrg
Saya sarankan Anda menghapus functionkata kunci, itu sudah usang. Lihat posting ini
SiegeX
Kamu Menakjubkan.
Bijan
2

Proctools termasuk pgrepdan pkilldan tersedia untuk OpenBSD dan OSX. Itu belum diperbarui dalam beberapa saat, tetapi masih harus bekerja (setidaknya pada OSX yang jarang memodifikasi ABI-nya).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Proctools tidak dapat dikompilasi dengan baik dengan Snow Leopard
1

Anda bisa mencoba killall. Itu membunuh proses dengan nama. Setiap proses yang cocok dengan string yang Anda berikan terbunuh.

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

Jika kamu melakukan

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

itu akan menunjukkan kepada Anda daftar proses yang akan dibunuh seperti di bawah ini.

kill -TERM 70836

Jika Anda menginginkan sinyal yang berbeda, lakukan hal berikut

killall -9 processname
Jerry Saravia
sumber
1

Ini solusi saya untuk pkill:

#!/bin/sh

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