Làm cách nào để tìm kiếm một quy trình theo tên mà không sử dụng grep?


62

Để tìm kiếm một quá trình bạn có thể sử dụng psvới grep.

Ví dụ để tìm kiếm firefox

ps aux | grep firefox

Làm thế nào để có được câu trả lời tương tự mà không cần sử dụng grep?


1
Tôi tò mò tại sao bạn muốn làm điều này, vì ps/grepgiải pháp đó hoạt động rất tốt?
nơ ron

OP chỉ muốn một lệnh ngắn hơn tôi đoán. Nếu có một điều như thế ps -n <process name>sẽ trả lời nhu cầu của anh ta. ps -n firefoxlà một chút ngắn hơn ps | grep firefox. psđã có thể lọc pidhoặc xử lý cho id người dùng, vì vậy đây là một câu hỏi hợp lý để lọc tên quy trình.
Joool Schulenklopper

Câu trả lời:


71

Các pgreplệnh, và anh chị em của nó pkill, tồn tại một cách chính xác cho mục đích này:

  • pgrep firefox sẽ liệt kê tất cả các quy trình có lệnh khớp firefox
  • pgrep -f firefox sẽ liệt kê tất cả các quy trình có toàn bộ dòng lệnh khớp firefox
  • pgrep -x firefox sẽ liệt kê tất cả các quy trình có lệnh khớp chính xác firefox
  • ... và cứ thế.

Và tự nhiên, pgrepsẽ loại trừ chính nó khỏi trận đấu, vì vậy không có grepnghi thức nào liên quan đến ps | greplà cần thiết.


Các công cụ khác cho việc này là pidofkillallcác lệnh. Chúng không linh hoạt như pgreppkill.

  • pidof firefox sẽ liệt kê các tiến trình có lệnh firefox

24
ps -fC process-name

thí dụ:

ps -fC firefox

từ man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

Đây là câu trả lời tốt nhất nhưng không may là không hoạt động trên OSX. ps -CCờ BSD hoạt động hoàn toàn khác - "Thay đổi cách tính phần trăm CPU"
mastaBlasta

2

topcho phép bạn tìm kiếm chuỗi khi bạn nhấn chữ hoa L; quá trình sẽ được tô sáng và sử dụng các phím mũi tên lên và xuống để cuộn qua danh sách các quy trình. Tương tự, htoplệnh cho phép làm nổi bật một quy trình cụ thể khi bạn nhấn /. Và \sẽ lọc tất cả các quy trình với một chuỗi cụ thể trong tên.

Đối với những người thích awk, đây là một oneliner awk : ps -eF | awk '/process-name/ {print $11}' . Với ps -eFtên quá trình luôn ở cột thứ 11. Ngoài ra, nếu bạn ps -eF | awk '{print $11}' | sortcó một danh sách các tên quy trình được sắp xếp, sắp xếp theo thứ tự abc. Đưa nó vào lesslệnh chỉ để xem danh sách dài các tệp dễ dàng hơn.


2

Một mẹo hay

$ps -ejH

Bạn sẽ nhận được tất cả các quy trình với tên

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

Chuyển hướng hoặc sao chép đầu ra vào một tệp và sau đó mở nano, nhấn Ctrl+ W và bạn có thể tìm kiếm tên bạn muốn.


1

Bạn cũng có thể sử dụng htopvà sau đó nhấn F4 để lọc kết quả với chuỗi do người dùng xác định phù hợp. Bạn cũng có một tính năng tìm kiếm tùy chỉnh có sẵn bằng cách nhấn F3.



0

Tôi chỉ đọc bí danh ps này trên Blog Lennart Poettering. Đầu ra là theo cách nuôi dạy nhóm kiểm soát systemd:

alias psc='ps xawf -eo pid,user,cgroup,args'
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.