Hướng dẫn lệnh pgrep Linux cho người mới bắt đầu (10 ví dụ)

theanh

Administrator
Nhân viên
Bạn có thể đã biết về lệnh grep trong Linux, lệnh này tìm kiếm một mẫu, sau đó in văn bản khớp trong đầu ra. Nếu yêu cầu là áp dụng loại xử lý này để lấy thông tin chọn lọc về các quy trình hiện đang chạy trong hệ thống thì sao?

Vâng, bạn sẽ vui mừng khi biết rằng có một công cụ dòng lệnh - pgrep - cho phép bạn thực hiện chính xác điều này. Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của pgrep bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 20.04 LTS và trên Debian 10.

Lệnh pgrep của Linux​

Lệnh pgrep trong Linux cho phép người dùng tra cứu các quy trình dựa trên tên và các thuộc tính khác. Sau đây là cú pháp của nó:
Mã:
pgrep [options] pattern
Và đây là cách trang hướng dẫn của công cụ giải thích về nó:
Mã:
pgrep xem xét các quy trình đang chạy hiện tại và liệt kê ID quy trình khớp với 
tiêu chí lựa chọn cho stdout. Tất cả các tiêu chí phải khớp.
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh pgrep hoạt động.

Câu hỏi 1. Làm thế nào để tìm ID của một quy trình do một người dùng cụ thể sở hữu?​

Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn dòng lệnh -u. Ví dụ, để tìm ID của tiến trình 'gedit' do người dùng 'himanshu' sở hữu, hãy sử dụng pgrep theo cách sau:
Mã:
pgrep -u himanshu gedit
Đây là đầu ra mà lệnh này tạo ra trong trường hợp của tôi:


Câu hỏi 2. Làm thế nào để pgrep in ra số lượng các tiến trình khớp?​

Trong trường hợp bạn muốn công cụ chỉ in ra số lượng chứ không phải ID, hãy sử dụng tùy chọn dòng lệnh -c. Ví dụ, để biết số lượng tiến trình do người dùng 'himanshu' sở hữu, hãy chạy lệnh sau:
Mã:
pgrep -c -u himanshu
Sau đây là kết quả đầu ra mà lệnh này tạo ra trên hệ thống của tôi:
Mã:
83

Câu hỏi 3. Làm thế nào để sử dụng dấu phân cách tùy chỉnh trong đầu ra?​

Theo mặc định, ID tiến trình trong đầu ra được phân cách bằng dấu xuống dòng. Tuy nhiên, nếu muốn, bạn có thể thay đổi dấu phân cách, điều này có thể thực hiện bằng tùy chọn dòng lệnh -d.

Ví dụ, tôi muốn sử dụng dấu hai chấm :)) làm dấu phân cách, vì vậy tôi đã thực thi lệnh pgrep theo cách sau:
Mã:
pgrep -u himanshu -d:
Sau đây là kết quả đầu ra của lệnh được sản xuất:
Mã:
1793:1794:1807:1811:1813:1817:1820:1914:1917:1922:1925:1936:1938:1954:1974:1978:1980:1982:1993:1999
:2008:2009:2012:2020:2024:2034:2036:2043:2048:2049:2051:2052:2055:2064:2068:2073:2074:2085:2088:
2093:2094: 2095:2098:2101:2104:2117:2125:2161:2162:2168:2173:2182:2201:2213:2233:2245:2266:2279:
2388:2409:2430:2456:2473:2564:2647:3085:3108:3178:3284:3297:3320:3325:3467:3487:3980:4040:4658:
5668:5721:5777:6271:6281:6512:6808

Câu hỏi 4. Làm thế nào để tìm kiếm pgrep không phân biệt chữ hoa chữ thường?​

Theo mặc định, tìm kiếm pgrep phân biệt chữ hoa chữ thường. Tuy nhiên, nếu muốn, bạn có thể làm cho nó không phân biệt chữ hoa chữ thường. Để làm như vậy, bạn phải sử dụng tùy chọn dòng lệnh -i.

Ví dụ:
Mã:
pgrep -i gedit

Câu hỏi 5. Làm thế nào để pgrep liệt kê tên tiến trình?​

Để làm điều này, hãy sử dụng tùy chọn dòng lệnh -l.

Đây là một ví dụ:
Mã:
pgrep -u himanshu -l
Đây là một đoạn trích về đầu ra được tạo ra trên hệ thống của tôi:
Mã:
1793 systemd
1794 (sd-pam)
1807 gnome-keyring-d
1811 gdm-x-session
1813 Xorg
1817 dbus-daemon
1820 gnome-session-b
1914 ssh-agent
1917 gvfsd
1922 gvfsd-fuse
1925 at-spi-bus-laun
1936 dbus-daemon
1938 at-spi2-registry
1954 gnome-shell
1974 ibus-daemon
1978 ibus-dconf
1980 ibus-x11
1982 ibus-portal
1993 gnome-shell-cal
1999 evolution-sourc
2008 dconf-service
2009 gvfs-udisks2-vo
2012 goa-daemon
2020 gvfs-mtp-volume
2024 gvfs-goa-volume
...
...
...
Vì vậy, bạn có thể thấy rằng ngoài ID quy trình, tên quy trình cũng được tạo ra trong đầu ra.

Câu hỏi 6. Làm thế nào để tạo danh sách lệnh đầy đủ cho pgrep?​

Trong trường hợp bạn muốn pgrep hiển thị lệnh đầy đủ được sử dụng để khởi chạy từng quy trình, hãy sử dụng tùy chọn dòng lệnh -a.
Mã:
pgrep -u himanshu -a
Mã:
1793 /lib/systemd/systemd --user
1794 (sd-pam)
1807 /usr/bin/gnome-keyring-daemon --daemonize --login
1811 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1813 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
1817 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
1820 /usr/lib/gnome-session/gnome-session-binary --session=ubuntu
1914 /usr/bin/ssh-agent /usr/bin/im-launch môi trường GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1917 /usr/lib/gvfs/gvfsd
1922 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
1925 /usr/lib/at-spi2-core/at-spi-bus-launcher
1936 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
1938 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
1954 /usr/bin/gnome-shell
1974 ibus-daemon --xim --panel vô hiệu hóa
1978 /usr/lib/ibus/ibus-dconf
1980 /usr/lib/ibus/ibus-x11 --kill-daemon
1982 /usr/lib/ibus/ibus-portal
1993 /usr/lib/gnome-shell/gnome-shell-calendar-server
1999 /usr/lib/evolution/evolution-source-registry
2008 /usr/lib/dconf/dconf-service
2009 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2012 /usr/lib/gnome-online-accounts/goa-daemon
2020 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2024 /usr/lib/gvfs/gvfs-goa-volume-monitor
2034 /usr/lib/gnome-online-accounts/goa-identity-service
2036 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2043 /usr/lib/gvfs/gvfs-afc-volume-monitor

Câu hỏi 7. Làm thế nào để pgrep chỉ hiển thị tiến trình mới nhất?​

Nếu thay vì tất cả các tiến trình, bạn muốn pgrep chỉ xuất ra tiến trình gần đây nhất, thì bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn dòng lệnh -n.

Sau đây là một ví dụ:
Mã:
pgrep -u himanshu -n -l
Và sau đây là kết quả đầu ra mà lệnh này tạo ra:
Mã:
7163 thunderbird
Tôi có thể xác nhận rằng Thunderbird thực sự là tiến trình gần đây nhất được người dùng 'himanshu' khởi chạy.

Câu hỏi 8. Làm thế nào để pgrep chỉ hiển thị tiến trình cũ nhất?​

Để làm được điều này, hãy sử dụng tùy chọn dòng lệnh -o.
Mã:
pgrep -u himanshu -o -l
Và đây là kết quả mà lệnh này tạo ra:
Mã:
1793 systemd

Kết luận​

Vì vậy, bạn có thể thấy rằng pgrep là một lệnh cực kỳ hữu ích. Sau khi thực hành xong tùy chọn dòng lệnh mà chúng tôi đã thảo luận ở đây, bạn có thể đến trang hướng dẫn sử dụng của công cụhttps://linux.die.net/man/1/pgrep?utm_source=diendancongnghe.com để tìm hiểu thêm về nó.
 
Back
Bên trên