Cách tìm và dừng quá trình trên máy Mac


11

Làm cách nào tôi có thể tìm id tiến trình và dừng quá trình đang chạy trên cổng 8080 trên máy Mac?

Trên Ubuntu, nó hoạt động:

ps -aux

và tôi có thể tìm quá trình và chạy:

kill -9 pid

ps -aux dường như không hoạt động, làm thế nào tôi có thể làm điều này trên Mac OS X Lion?



3
Không. Số Không. Xin vui lòng, xin vui lòng không sử dụng kill -9 pid cho đến sau khi bạn đã cố gắng chỉ kill pid. Nhiều quy trình sẽ có các trình xử lý tín hiệu sẽ dọn sạch việc sử dụng tài nguyên của chúng, kết nối chặt chẽ và các tác vụ trước khi tắt máy khác. Nếu bạn giết bằng -9, quy trình sẽ chết ngay lập tức mà không cần dọn dẹp. Giết mà không có -9 sẽ làm việc hầu hết thời gian.
Doug Harris

Câu trả lời:


16

Vì lý do lịch sử, ps Các lựa chọn là một mớ hỗn độn và không nhất quán. Trên OS X Lion, bất kỳ thứ nào trong số này cũng sẽ hoạt động:

ps -ax
ps -e
ps aux # this displays in a different format

Tôi không có hộp ubfox tiện để kiểm tra, nhưng theo trang nam , ps -aux cũng không phải là cách đúng đắn để làm điều đó:

Note that "ps -aux" is distinct from "ps aux". The POSIX and UNIX
standards require that "ps -aux" print all processes owned by a user
named "x", as well as printing all processes that would be selected by
the -a option. If the user named "x" does not exist, this ps may
interpret the command as "ps aux" instead and print a warning. This
behavior is intended to aid in transitioning old scripts and habits. It
is fragile, subject to change, and thus should not be relied upon.


5

Nếu bạn muốn tìm và hủy tất cả các quy trình tuân thủ chuỗi, bạn cũng có thể sử dụng các thao tác sau trên Mac OSX:

ps aux | grep <string> | awk '{print $1}' | <sudo> xargs kill -9

Về cơ bản, điều này sẽ làm là nó sẽ tìm (grep) tất cả các quy trình hiện đang chạy trên hệ thống của bạn phù hợp với, AWK nhận được PID, trong lệnh PS là cột thứ hai và cái cuối cùng lấy các đối số từ AWK và giết chết các quá trình.

Sử dụng SUDO, chỉ khi người dùng hiện tại không có một số quyền để giết quá trình và nếu bạn có quyền truy cập SUDO trên hệ thống của mình.


2

tôi tin ps -ef trên Mac gần tương đương với ps -aux trên linux.

Để có được những gì mà PID có cổng 8080 đang sử dụng: lsof -P | grep 8080

Các trường ánh xạ tới:

[mini-nevie:~] nevinwilliams% lsof -P | head -1
COMMAND     PID          USER   FD     TYPE             DEVICE  SIZE/OFF    NODE NAME

Tôi đã khởi nghiệp ttcp -rs nghe trên cổng 5001.

mini-nevie:~] nevinwilliams% lsof -P | grep 5001
ttcp      27999 nevinwilliams    3u    IPv4 0xb70c1f66028d6961       0t0     TCP *:5001 (LISTEN)

và thực tế, PID 27999 tương ứng với PID của ttcp quá trình tôi đưa ra.


1
Bạn cũng có thể dùng ps aux (không có dấu gạch ngang) trên OS X. ps -ef bao gồm các cột khác nhau và sử dụng một định dạng khác nhau.
Lri

Tôi không có đăng nhập linux để so sánh; Cách đây nhiều năm, IIRC, nếu -aux không đưa ra sản lượng dự kiến ​​cho một hương vị đặc biệt của unix, thì -ef sẽ ... AIX, Linux, SunOS đã sử dụng -aux, BSD, Solaris cần -ef để tương thích; Tôi quên nếu IRIX là -aux hoặc -ef. Tôi không nhớ sự khác biệt chính trong các hệ thống tương ứng là ...
Nevin Williams

Các phụ trợ và -aux của OS X sử dụng cùng một định dạng, nhưng -aux của Ubuntu lại in cảnh báo khi bắt đầu.
Lri

1
Ahha ... Sự phân chia là giữa triển khai SysV và BSD.
Nevin Williams

1

Để cập nhật, cho macOS:

ps -e | grep python | awk '{print "sudo kill -9",  $1}' | sh

Đối với Linux:

ps -ax | grep python | awk '{print "sudo kill -9",  $1}' | sh
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.