Những điểm chính
• Tìm hiểu lệnh pgrep trong Linux: Nắm được pgrep là gì và nguyên lý hoạt động cơ bản của lệnh này.
• Biết cách sử dụng pgrep từ cơ bản đến nâng cao: Có thể áp dụng pgrep linh hoạt trong nhiều tình huống quản trị hệ thống.
• Các lệnh thay thế pgrep: Làm quen với một số công cụ tương tự để có thêm lựa chọn.
• Cách xử lý lỗi thường gặp: Biết cách nhận diện và sửa các lỗi phổ biến khi dùng pgrep.
• Vai trò thực tế của pgrep: Hiểu được tầm quan trọng của lệnh trong việc quản lý tiến trình Linux.
Lệnh pgrep Linux là gì?
Lệnh pgrep là một tiện ích dòng lệnh dùng để tìm kiếm tiến trình đang chạy dựa trên tên hoặc các điều kiện lọc cụ thể. Thay vì phải kết hợp ps với grep để lọc thủ công, pgrep cho phép bạn thực hiện thao tác này nhanh hơn chỉ bằng một lệnh ngắn gọn.

Cú pháp cơ bản của pgrep như sau:
pgrep [tùy_chọn] tên_tiến_trình
Ví dụ:
pgrep bash
Lệnh trên sẽ trả về danh sách PID của toàn bộ tiến trình bash đang chạy.
Ngoài cách sử dụng cơ bản, pgrep còn hỗ trợ nhiều tùy chọn mạnh mẽ giúp lọc theo user, group, terminal hoặc thời gian khởi chạy.
Cách sử dụng lệnh pgrep Linux cơ bản
Lệnh pgrep thuộc bộ công cụ procps hoặc procps-ng, vốn cung cấp các tiện ích quản lý tài nguyên và giám sát hệ thống.
Tên gọi pgrep thực chất là sự kết hợp của:
• ps — hiển thị trạng thái tiến trình
• grep — lọc chuỗi văn bản
Ở mức cơ bản, pgrep quét toàn bộ process hiện có và in ra PID của các tiến trình phù hợp.
Nếu không tìm thấy kết quả, lệnh trả về exit code là 1.
Ví dụ:
pgrep sshd
Lệnh này sẽ hiển thị PID của toàn bộ tiến trình sshd, tiến trình chịu trách nhiệm xử lý kết nối SSH.
Ưu điểm của pgrep là:
• Cú pháp ngắn gọn
• Dễ nhớ
• Cho kết quả nhanh
• Không cần lọc thủ công bằng pipeline dài
Lưu ý: mặc định pgrep tìm theo tên process. Nếu tên process không khớp hoàn toàn, kết quả có thể không như mong đợi. Khi cần tìm theo toàn bộ command line, bạn nên dùng flag -f.

Cách sử dụng lệnh pgrep Linux nâng cao
Khi đã quen với thao tác cơ bản, bạn có thể tận dụng các flag nâng cao để lọc tiến trình chính xác hơn.
|
Tùy chọn |
Chức năng |
Ví dụ |
-l |
Hiển thị PID kèm tên process |
pgrep -l sshd |
-u |
Lọc theo user |
pgrep -u root sshd |
-n |
Lấy process mới nhất |
pgrep -n bash |
-o |
Lấy process cũ nhất |
pgrep -o bash |
-v |
Loại trừ kết quả khớp |
pgrep -v sshd |
-x |
Khớp chính xác tên |
pgrep -x bash |
-f |
Tìm theo command line |
pgrep -f "bash -c" |
-P |
Tìm process con theo PID cha |
pgrep -P 1 |
-g |
Lọc theo process group |
pgrep -g 1 |
-t |
Lọc theo terminal |
pgrep -t pts/0 |
Dưới đây là một vài ví dụ thực tế.
Tìm theo toàn bộ command line với -f
pgrep -f "bash -c"
Lệnh này sẽ tìm tất cả process có chứa chuỗi bash -c trong dòng lệnh thực thi.
Tìm theo user với -u
pgrep -u root sshd
Chỉ hiển thị các process sshd thuộc user root.
Hiển thị PID kèm tên process
pgrep -l sshd
Cách này giúp bạn xem PID tương ứng với từng process rõ ràng hơn.
Các lệnh thay thế cho pgrep
Dù pgrep rất tiện lợi, Linux vẫn có nhiều công cụ khác cho chức năng tương tự.
pidof
Lệnh pidof dùng để lấy PID của chương trình đang chạy.
Ví dụ:
pidof sshd
Ưu điểm:
• Nhanh
• Cú pháp đơn giản
Nhược điểm:
• Ít tùy chọn nâng cao
ps kết hợp grep
Bạn cũng có thể dùng:
ps aux | grep sshd
Cách này hiển thị nhiều thông tin chi tiết hơn:
• PID
• CPU
• RAM
• Thời gian chạy
• Command line
So sánh nhanh:
• pidof: nhanh, đơn giản
• ps | grep: chi tiết nhưng dài dòng
• pgrep: cân bằng giữa đơn giản và linh hoạt
Các lỗi thường gặp khi dùng pgrep
1. Không có kết quả trả về
Đây là lỗi phổ biến nhất.
Nguyên nhân thường do:
• Sai tên process
• Khác chữ hoa/chữ thường
• Process đã dừng
Cách xử lý:
Dùng -f để tìm theo command line.
pgrep -f MyProcess
2. Trả về quá nhiều kết quả
Điều này thường xảy ra với process phổ biến như python, node, sshd.
Cách khắc phục:
• Dùng -u để lọc theo user
• Dùng -x để khớp chính xác
Ví dụ:
pgrep -u root -x sshd
Vai trò của pgrep trong quản lý tiến trình Linux
Trong Linux, mỗi chương trình đang chạy đều được gán một PID (Process ID) riêng biệt. PID giúp hệ điều hành quản lý tài nguyên, theo dõi hoạt động và điều phối tiến trình.
Lệnh pgrep giúp xác định nhanh PID dựa trên các tiêu chí lọc, từ đó hỗ trợ rất tốt trong quản trị server và tự động hóa shell script.
Ví dụ: tìm tất cả tiến trình của user root.
pgrep -u root
Một ví dụ khác trong shell script để kiểm tra dịch vụ SSH:
if pgrep -x "sshd" > /dev/null; then
echo "sshd is running"
else
echo "sshd is not running"
fi
Script trên sẽ kiểm tra xem tiến trình sshd có đang chạy hay không.
Ngoài ra, pgrep thường được dùng cùng:
• pkill — kết thúc process theo tiêu chí lọc
• ps — xem chi tiết tiến trình
• top — giám sát process theo thời gian thực