pgrep và pkill thay thế trên mac os x?


23

Có các lựa chọn thay thế pgreppkilllệnh trên Mac OS X hay tôi chỉ nên tạo bí danh cho chúng bằng các lệnh khác có sẵn cho tôi?

Câu trả lời:


11

Bạn có thể sử dụng MacPorts :sudo port install proctools

Đây là kết quả của port search pgrep:

proctools @0.4pre1 (sysutils)
    pgrep, pkill and pfind for OpenBSD and Darwin (Mac OS X)

3
proctools cũng có sẵn thông qua Homebrew
Andrew Marshall

@AndrewMarshall đã đúng. Đối với thử homebrewbrew install proctools
cwd

18

Trên OS X Lion với Homebrew :

$ brew install proctools

Điều này tải về, xây dựng và cài đặt pgrep, pkillpfind.


Có thể xây dựng GUI để hoạt động theo cách xkill không nhưng đối với OSX
Jonas Oestman

11

Bạn không cần một giải pháp thay thế nữa: vì MacOS 10.8 pgreppkillcó sẵn theo mặc định.


10

Giả sử rằng bạn đang sử dụng một số phiên bản Bash tương đối gần đây trong Mac, bạn có thể viết phiên bản pgrephàm riêng của mình và sau đó thêm nó vào .bashrctệp của mình :

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

như đối với pkillbạn có thể sử dụng như sau:

function pkill() {
    local pid
    pid=$(ps ax | grep $1 | grep -v grep | awk '{ print $1 }')
    kill -9 $pid
    echo -n "Killed $1 (process $pid)"
}

Tôi đang sử dụng Z Shell, mặc dù sẽ không có vấn đề gì trong việc thích nghi với điều này.
Eimantas

1
hoặc / bin / kill $ (ps ax | awk '$ 5 ~ /' "$ 1" '/ {print $ 1}') cho một pgrep trung thành hơn (chỉ tên quá trình, không tranh luận. Tôi sử dụng / bin / kill theo thói quen vì Nó đáng tin cậy mất nhiều hơn một PID để tiêu diệt. Có những thủ thuật khác, nếu bạn kiểm soát regrec để không bao giờ phải 'grep -v grep' - theo cách đó bạn có thể pkill greps!)
jrg

Tôi đề nghị bạn loại bỏ functiontừ khóa, nó không được dùng nữa. Xem bài đăng này
SiegeX

Bạn thật tuyệt vời.
bijan

2

Proctools bao gồm pgreppkillcó sẵn cho OpenBSD và OSX. Nó đã không được cập nhật trong một thời gian, nhưng nó vẫn hoạt động (ít nhất là trên OSX mà hiếm khi sửa đổi ABI của nó).


Proctools không biên dịch tốt với Snow Leopard

1

bạn có thể thử killall. Nó giết các quá trình theo tên. Bất kỳ quy trình nào khớp với chuỗi bạn truyền vào đều bị giết.

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

Nếu bạn làm

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

nó sẽ hiển thị cho bạn một danh sách các quy trình sẽ bị giết như dưới đây.

kill -TERM 70836

Nếu bạn muốn có một tín hiệu khác, hãy làm như sau

killall -9 processname

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.