Sự khác biệt giữa pidof và pgrep là gì?


12

Khi tôi sử dụng một trong hai lệnh này với một đối số là tên của một quá trình, cả hai đều trả về cùng một số chính xác. Có phải chúng là cùng một lệnh? Có phải họ là hai lệnh khác nhau làm cùng một việc? Là một trong số họ một bí danh cho người khác?

pidof firefox
pgrep firefox

Câu trả lời:


18

Các chương trình pgreppidofkhông hoàn toàn giống nhau, nhưng chúng rất giống nhau. Ví dụ:

$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1

Như bạn có thể thấy, pidofthất bại trong việc tìm kiếm một trận đấu cho [i]ref. Điều này là do pidof programtrả về một danh sách tất cả các ID tiến trình được liên kết với một chương trình được gọi program. Mặt khác, pgrep retrả về một danh sách tất cả các ID tiến trình được liên kết với một chương trình có tên khớp với biểu thức chính quy re.

Trong các hình thức cơ bản nhất của chúng, sự tương đương thực sự là:

$ pidof 'program'
$ pgrep '^program$'

Như một ví dụ cụ thể khác, hãy xem xét:

$ ps ax | grep '[w]atch'
   12 ?        S      0:04 [watchdog/0]
   15 ?        S      0:04 [watchdog/1]
   33 ?        S<     0:00 [watchdogd]
18451 pts/5    S+     0:02 watch -n600 tail log-file
$ pgrep watch
12
15
33
18451
$ pidof watch
18451

3

Fox đã đề cập rằng pgrepcác tìm kiếm sử dụng các biểu thức thông thường, trong khi pidofthì không.

Nhưng pgrepcũng có nhiều tùy chọn hơn có sẵn:

  • Với -u "$UID"bạn chỉ có thể khớp các quy trình thuộc về người dùng hiện tại.
  • Với --parentbạn có thể tìm thấy các quy trình con của một quy trình nhất định.
  • Bạn có thể chọn --oldesthoặc --newestcủa các quá trình phù hợp.
  • ... và nhiều thứ khác được liệt kê trên trang nam ...

Hãy tìm hiểu xem mỗi quy trình thuộc về gói nào (trên các hệ thống apt):

$ dpkg -S "$(which pidof)"
sysvinit-utils: /bin/pidof

$ dpkg -S "$(which pgrep)"
procps: /usr/bin/pgrep
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.