Tôi có thể sử dụng GNU ps trên OS X không?


17

Chúng tôi có thể cài đặt GNU coreutils thông qua brew. Nhưng không có pstrong các dụng cụ . Chúng ta có thể sử dụng gnu pstrong OS X không?

Tôi muốn sử dụng GNU psvì nó có nhiều tùy chọn và tính năng hơn.


Bạn đã thử chạy pshoặc ps -eftrong một thiết bị đầu cuối trên OSX? hoạt động với tôi trên OSX 10.7.5 mà không cần sửa đổi, trên hai máy khác nhau. Đó là trong / bin / ps
jammypeach

Yup, tôi biết, tôi muốn sử dụng GNU psvì nó có nhiều tùy chọn và tính năng hơn.
Sanghyun Lee

ah OK, xin lỗi tôi đã không nhận ra điều đó từ câu hỏi như đã nêu. Tôi đề nghị bao gồm cả ở đâu đó, khiến bất cứ ai khác cũng nghĩ giống như tôi - chúc may mắn với việc tìm ra giải pháp
jammypeach

Cảm ơn vì đã góp ý. Tôi đã thêm giải thích về điều đó.
Sanghyun Lee

Câu trả lời:


22

Không có chương trình ps di động. Lệnh ps có sẵn trên linux là, như những người khác đã đề cập, từ gói "Procps". Lý do tại sao điều này không thể được chuyển sang OSX là vì các nhân Linux và OSX không phơi bày thông tin này theo cùng một cách. Linux sử dụng hệ thống tập tin giả trong / Proc, trong khi OSX sử dụng chức năng sysctl. Các hệ thống khác có thể sử dụng một trong hai cơ chế nhưng cung cấp dữ liệu ở định dạng khác hoặc có thể yêu cầu các chương trình như ps đọc trực tiếp từ bộ nhớ của kernel.

Nói chung, không có tiêu chuẩn nào về cách xử lý thông tin có sẵn cho các chương trình như ps và top; vì vậy chương trình phải được thiết kế cho một hệ điều hành cụ thể. Nếu có một tính năng cụ thể bị thiếu trong ps OSX, bạn sẽ phải tìm một chương trình khác có thể thực hiện hoặc tự viết một cái (xem hướng dẫn sử dụng sysctl, cụ thể là KERN_PROC làm điểm bắt đầu) hoặc sửa đổi ps hiện có lệnh để thêm tính năng.

Cách khác, nếu bạn có thể nhận được những gì bạn cần bằng cách phân tích đầu ra của lệnh ps, bạn có thể viết chương trình di động - đầu ra với -otùy chọn này đáng tin cậy trên các nền tảng, đặc biệt nếu bạn tham khảo tiêu chuẩn UNIX cho tên cột để sử dụng.


Hệ /procthống tập tin có phải là phương thức duy nhất mà nhân Linux cung cấp để có được danh sách các quy trình hay không, cũng có các cuộc gọi hệ thống riêng biệt cung cấp thông tin đó?
Tanner Swett

1
@TannerSwett Tôi không nghĩ vậy. Trước khi / Proc được triển khai, lệnh ps trên linux đã hoạt động bằng cách đọc từ / dev / kmem và / dev / exchange.
Random832

9

Không - vì nó không tồn tại. Về lý do tại sao không có phần mềm dựng sẵn pstrong coreutilsgói GNU , hãy xem câu trả lời này trên Diễn đàn Unix & Linux.

Công thức thay thế tốt nhất có sẵn thông qua Homebrew là psgrep:

psgrep là một tập lệnh shell Bash nhỏ tìm kiếm danh sách quy trình (như được lấy bởi ps (1) ) bằng cách sử dụng tiện ích tuyệt vời grep (1) cho sức mạnh của nó.

Điều đó nói rằng, bạn vẫn có thể sử dụng psgrepđể hành xử như OS X pssẽ. Ví dụ:

   OPTIONS
   -a     Search the process list using BSD's "ps aux" format. This option
          includes all users' processes in the search.

   -b     Search the process list using BSD's "ps  ux"  format  (default).
          This option only includes the running user's processes.

pgrepcũng có sẵn thông qua brew, về mặt cú pháp gần hơn ps, nhưng kém hiệu quả hơn psgrep:

psgrep (1) hữu ích hơn pgrep (1) vì nó không chỉ có thể tìm kiếm danh sách quy trình và trả về một PID, nó có thể cung cấp nhiều thông tin hữu ích hơn như UID, GID, sử dụng bộ nhớ / CPU, tính độc đáo và mọi thứ khác được hỗ trợ bởi ps.


Tất cả nhấn mạnh của tôi.


2
pgrepcũng là một phần của các phiên bản OS X gần đây
nohillside

@patrix agh! điểm tốt, xác nhận:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot

Chỉ là một bên, như đã đề cập ở đây , proctoolsgói từ MacPorts hoặc Homebrew cung cấp pgreppkillđó là những gì cá nhân tôi đang tìm kiếm khi tôi xuất hiện ở đây.
TheDudeAdides 17/10/19

3

pskhông phải là một phần của GNU coreutils theo Wikpedia . Phiên bản đi kèm với bản phân phối Linux của tôi dường như là từ Procps , nhưng có vẻ như không có công thức nào cho nó trong homebrew. Có những công thức pstreecó thể cung cấp cho bạn chế độ xem cây tuyệt vời và cũng htoplà một trình xem quy trình tốt khác.

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.