Lệnh pgrep
Linux là công cụ giúp tìm kiếm các tiến trình đang chạy dựa trên tên hoặc các thuộc tính cụ thể. Đây là cách đơn giản và hiệu quả để kiểm tra nhanh các tiến trình mà không cần lọc thủ công từ danh sách dài trong ps
. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng pgrep
một cách dễ hiểu, phù hợp cho cả những người mới làm quen với Linux.
Những điểm chính
- Hiểu khái niệm lệnh
pgrep
trong Linux: Nắm rõ mục đích sử dụng và cách thức hoạt động cơ bản của lệnhpgrep
trong hệ điều hành Linux. - Biết cách sử dụng
pgrep
từ cơ bản đến nâng cao: Có thể áp dụng lệnhpgrep
linh hoạt để tìm kiếm và lọc tiến trình theo nhiều tiêu chí khác nhau. - Nắm được các lệnh thay thế cho
pgrep
: Biết thêm các lệnh khác có chức năng tương tự để linh hoạt khi thao tác trên hệ thống. - Biết cách xử lý các lỗi thường gặp với
pgrep
: Dễ dàng nhận diện và khắc phục lỗi khi sử dụngpgrep
, giúp quá trình quản lý hệ thống không bị gián đoạn. - Thấy được vai trò thực tiễn của
pgrep
: Hiểu được tầm quan trọng của lệnh này trong việc giám sát và quản lý quy trình trên hệ thống Linux. - Biết thêm Vietnix là nhà cung cấp dịch vụ lưu trữ uy tín, chất lượng.
- Giải đáp các câu hỏi thường gặp: Nắm được lời giải cho những thắc mắc phổ biến xoay quanh lệnh
pgrep
, giúp sử dụng lệnh hiệu quả hơn.
Lệnh pgrep Linux là gì?
Lệnh pgrep
Linux là một công cụ mạnh mẽ dùng để tìm kiếm các tiến trình (process) đang chạy dựa trên tên hoặc các thuộc tính nhất định. Thay vì phải sử dụng các lệnh như ps
kết hợp với grep
để lọc thủ công, pgrep
giúp bạn thực hiện điều này nhanh gọn và chính xác hơn chỉ với một dòng lệnh.

Cú pháp cơ bản của lệnh pgrep là:
pgrep [tùy chọn] tên_lệnh_cần_tìm
Ví dụ đơn giản:
pgrep bash
Lệnh trên sẽ trả về danh sách ID của tất cả các tiến trình bash
đang chạy trên hệ thống. Đây là cách sử dụng cơ bản nhất của pgrep
, nhưng thực tế thì lệnh này còn hỗ trợ rất nhiều tùy chọn nâng cao giúp bạn tìm kiếm tiến trình theo người dùng, nhóm, thời gian bắt đầu và nhiều điều kiện khác. Tiếp theo, mình sẽ hướng dẫn bạn cách sử dụng lệnh pgrep
từ cơ bản đến nâng cao để bạn có thể tận dụng tối đa công cụ này trong việc quản lý hệ thống Linux.
Cách sử dụng lệnh pgrep Linux cơ bản cho người mới
Lệnh pgrep
là công cụ hữu ích trong Linux giúp bạn tìm kiếm các tiến trình đang chạy dựa trên tên hoặc một số thuộc tính nhất định. Nó thuộc gói công cụ procps
hoặc procps-ng
, vốn cung cấp các tiện ích theo dõi và quản lý tài nguyên hệ thống. Tên gọi pgrep
là sự kết hợp giữa hai lệnh quen thuộc: ps
(hiển thị trạng thái tiến trình) và grep
(tìm kiếm theo chuỗi văn bản).
Ở mức cơ bản, pgrep
sẽ quét qua các tiến trình hiện có và trả về PID (Process ID) của các tiến trình khớp với tiêu chí tìm kiếm. Nếu không tìm thấy tiến trình nào, lệnh sẽ trả về mã thoát là 1
, còn nếu có thì sẽ in ra danh sách các PID tương ứng.
Ví dụ đơn giản:
pgrep sshd
Lệnh trên sẽ liệt kê tất cả PID của tiến trình sshd
đang chạy trên hệ thống. Đây là tiến trình quản lý kết nối SSH – giao thức truy cập từ xa an toàn phổ biến trong quản trị hệ thống. Ưu điểm của pgrep
là cú pháp đơn giản, dễ nhớ và cho kết quả nhanh chóng mà không cần phải dùng lệnh ps aux | grep
, vốn dài dòng và cần lọc thủ công. Ngoài ra, pgrep
còn hỗ trợ nhiều tùy chọn để tinh chỉnh kết quả tìm kiếm.
Tuy nhiên, lưu ý rằng pgrep
chỉ tìm kiếm theo tên tiến trình đúng tuyệt đối. Nếu bạn tìm kiếm myprocess
thì tiến trình có tên myprocess1
sẽ không được liệt kê. Để mở rộng phạm vi tìm kiếm, bạn có thể thêm tùy chọn -f
để lệnh tìm cả trong dòng lệnh khởi chạy.
Hiểu rõ cách hoạt động cơ bản của pgrep
sẽ giúp bạn quản lý tiến trình hiệu quả hơn và tiết kiệm thời gian trong quá trình làm việc với hệ thống Linux. Trong phần tiếp theo, mình sẽ hướng dẫn cách sử dụng pgrep
ở mức nâng cao để khai thác tối đa công cụ này.

Cách sử dụng lệnh pgrep Linux nâng cao
Khi đã quen với các thao tác cơ bản, bạn sẽ thấy rằng sức mạnh thật sự của lệnh pgrep
nằm ở khả năng xử lý các truy vấn phức tạp thông qua nhiều tùy chọn nâng cao. Những tùy chọn này giúp bạn tìm kiếm tiến trình một cách chính xác và linh hoạt hơn rất nhiều so với cách dùng đơn thuần. Dưới đây là một số tùy chọn (flag) thường được sử dụng trong các tình huống nâng cao:
Tùy chọn | Chức năng | Ví dụ sử dụng |
---|---|---|
-l | Hiển thị cả tên tiến trình và PID | pgrep -l sshd |
-u | Tìm tiến trình thuộc về một người dùng cụ thể | pgrep -u root sshd |
-n | Chỉ hiển thị tiến trình mới nhất phù hợp | pgrep -n bash |
-o | Chỉ hiển thị tiến trình cũ nhất phù hợp | pgrep -o bash |
-v | Loại trừ kết quả phù hợp với từ khóa | pgrep -v sshd |
-x | Chỉ khớp chính xác tên tiến trình | pgrep -x bash |
-f | Tìm kiếm toàn bộ dòng lệnh (không chỉ tên tiến trình) | pgrep -f 'bash -c' |
-P | Tìm tiến trình con dựa trên PID của tiến trình cha | pgrep -P 1 |
-g | Tìm tiến trình thuộc một nhóm tiến trình cụ thể | pgrep -g 1 |
-t | Tìm tiến trình theo thiết bị terminal | pgrep -t pts/0 |
Dưới đây là một số ví dụ minh họa cho cách sử dụng các tùy chọn này trong thực tế:
- Tìm theo toàn bộ dòng lệnh với
-f
: Khi có nhiều tiến trình có tên giống nhau,-f
cho phép bạn tìm kiếm theo toàn bộ dòng lệnh:
pgrep -f 'bash -c'
Kết quả: Hiển thị PID của các tiến trình có chứa 'bash -c'
trong toàn bộ dòng lệnh.
- Tìm tiến trình theo người dùng với
-u
: Lệnh sau sẽ trả về các tiến trìnhsshd
đang chạy dưới người dùngroot
:
pgrep -u root sshd
- Hiển thị cả tên và PID với
-l
: Lệnh sau giúp bạn biết rõ từng PID đi kèm với tên tiến trình:
pgrep -l sshd
Việc kết hợp các tùy chọn này giúp bạn quản lý tiến trình hiệu quả hơn, đặc biệt khi xử lý sự cố hoặc giám sát hệ thống. Tiếp theo, chúng ta sẽ cùng tìm hiểu các lệnh thay thế cho pgrep
để bạn có thêm lựa chọn linh hoạt khi làm việc với Linux.
Các lệnh thay thế cho lệnh pgrep Linux
Mặc dù pgrep
là một công cụ mạnh mẽ để tìm kiếm tiến trình trong Linux, nhưng không phải là lựa chọn duy nhất. Có một số lệnh khác cũng có thể thực hiện chức năng tương tự, tiêu biểu là pidof
và ps
. Việc hiểu rõ các lựa chọn thay thế này sẽ giúp bạn linh hoạt hơn trong quá trình quản lý tiến trình.
- pidof – Giải pháp đơn giản, nhanh gọn: Lệnh
pidof
được dùng để hiển thị PID (Process ID) của một chương trình đang chạy. So vớipgrep
,pidof
đơn giản hơn và không có nhiều tùy chọn nâng cao, nhưng lại rất hữu ích khi bạn chỉ cần lấy nhanh PID.
Ví dụ:
pidof sshd
Kết quả trả về sẽ là danh sách các PID của tất cả tiến trình sshd
đang chạy. Đây là cách đơn giản và nhanh chóng để có được thông tin tương tự như khi dùng pgrep
.
- ps – Cách tiếp cận chi tiết và linh hoạt hơn: Lệnh
ps
thường được sử dụng để hiển thị ảnh chụp hiện tại của các tiến trình đang chạy trên hệ thống. Khi kết hợp vớigrep
, bạn có thể lọc ra các tiến trình theo tên giống nhưpgrep
, đồng thời xem thêm nhiều thông tin chi tiết.
Ví dụ:
ps aux | grep sshd
Lệnh này sẽ liệt kê toàn bộ thông tin chi tiết về các tiến trình liên quan đến sshd
, bao gồm PID, CPU, bộ nhớ sử dụng, thời gian khởi động và nhiều dữ liệu khác.
So sánh ưu nhược điểm:
pidof
: Dễ sử dụng, nhanh chóng, nhưng hạn chế về tùy chọn nâng cao.ps | grep
: Cho thông tin chi tiết và kiểm soát tốt hơn, nhưng cú pháp phức tạp hơn và dễ gây rối với người mới.pgrep
: Cân bằng giữa sự đơn giản và tính năng nâng cao, rất phù hợp cho việc quản lý tiến trình hiệu quả.
Tùy vào mục đích sử dụng và mức độ thành thạo, bạn có thể chọn công cụ phù hợp. Việc làm quen với nhiều lệnh khác nhau sẽ giúp bạn chủ động xử lý mọi tình huống trong môi trường Linux.
Các lỗi thường gặp khi sử dụng lệnh pgrep Linux và cách xử lý
Khi sử dụng lệnh pgrep
, đôi khi bạn có thể gặp phải những kết quả không như mong đợi. Việc hiểu rõ các lỗi phổ biến và cách khắc phục sẽ giúp bạn tiết kiệm thời gian và thao tác chính xác hơn:
1. Không có kết quả trả về
Một lỗi phổ biến là pgrep
không trả về kết quả nào, mặc dù bạn chắc chắn tiến trình đang chạy. Nguyên nhân thường là do:
pgrep
phân biệt chữ hoa và chữ thường.- Tên tiến trình bạn nhập không khớp hoàn toàn với tên thực tế.
Cách xử lý: Bạn sử dụng flag -f
để tìm kiếm theo toàn bộ dòng lệnh, thay vì chỉ tên tiến trình.
pgrep -f MyProcess
Lệnh này sẽ trả về ID của tất cả tiến trình có chứa từ “MyProcess” trong dòng lệnh, kể cả khi tên không khớp chính xác hoặc có sự khác biệt về chữ hoa – chữ thường.
2. Trả về quá nhiều kết quả
Ngược lại, đôi khi pgrep
có thể trả về quá nhiều tiến trình, nhất là khi bạn tìm kiếm bằng một tên chung như python
hoặc sshd
.
Cách xử lý:
- Dùng flag
-u
để lọc theo người dùng. - Dùng flag
-x
để yêu cầu tên tiến trình phải khớp chính xác.
pgrep -u root -x sshd
Lệnh trên chỉ trả về các tiến trình sshd
thuộc về người dùng root
, giúp thu hẹp phạm vi kết quả.
3. Một số lưu ý và cách tối ưu khi dùng pgrep
Để tối ưu khi dùng pgrep, bạn nên lưu ý các vấn đề sau:
- Cụ thể hóa tìm kiếm: Càng cụ thể thì kết quả càng chính xác.
- Tận dụng các flag: Kết hợp nhiều tùy chọn như
-l
,-n
,-d
để kiểm soát đầu ra dễ dàng hơn. - Tra cứu thêm trong tài liệu: Lệnh
man pgrep
sẽ cung cấp danh sách đầy đủ các tùy chọn và ví dụ thực tế.
Vai trò của lệnh pgrep trong quản lý quy trình Linux
Trong hệ điều hành Linux, mỗi chương trình đang chạy được gọi là một tiến trình (process) và đều được gán một mã định danh duy nhất gọi là PID (Process ID). PID đóng vai trò quan trọng trong việc quản lý tài nguyên, theo dõi hoạt động và điều phối các tiến trình hệ thống.
Lệnh pgrep
được sử dụng để tìm kiếm các PID của tiến trình dựa trên tên hoặc các tiêu chí nhất định, giúp người dùng xác định nhanh chóng tiến trình cần quản lý. Đây là công cụ cực kỳ hữu ích trong các thao tác như kiểm tra tiến trình đang chạy, lọc tiến trình theo người dùng và đặc biệt là trong các shell script tự động hóa.
- Ví dụ cơ bản: Tìm tất cả PID của các tiến trình thuộc user
root
:
pgrep -u root
Kết quả trả về sẽ là danh sách các PID của những tiến trình đang được user root
sở hữu.
- Một ví dụ khác trong shell script: Kiểm tra tiến trình
sshd
có đang chạy không:
if pgrep -x "sshd" > /dev/null
then
echo "sshd is running"
else
echo "sshd is not running"
fi
Trong đoạn code trên, pgrep -x "sshd"
sẽ tìm tiến trình có tên chính xác là sshd
. Kết quả sẽ giúp script xác định có nên tiếp tục thực hiện các lệnh phụ thuộc vào tiến trình đó hay không. Ngoài ra, pgrep
còn thường được dùng kết hợp với các lệnh khác như:
pkill
: kết thúc tiến trình dựa trên tiêu chí tương tựpgrep
.ps
: hiển thị thông tin chi tiết về tiến trình.top
: giám sát tiến trình theo thời gian thực.
Vietnix – Nhà cung cấp dịch vụ lưu trữ uy tín, chất lượng
Vietnix là nhà cung cấp dịch vụ lưu trữ uy tín với giải pháp thuê VPS chất lượng cao, đặc biệt là VPS Linux chạy trên hạ tầng 100% ổ cứng SSD giúp đảm bảo tốc độ truy cập nhanh và ổn định. Khách hàng được toàn quyền quản trị, dễ dàng tùy chỉnh cấu hình qua giao diện trực quan, cùng hệ thống backup tự động bảo vệ dữ liệu an toàn. Với cơ chế phân quyền chặt chẽ và khả năng vận hành mượt mà, Vietnix mang đến giải pháp VPS an toàn, hiệu quả, giúp tối ưu chi phí cho mọi doanh nghiệp.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Câu hỏi thường gặp
pgrep có thể tìm kiếm tiến trình ẩn hoặc tiến trình con (child process) không?
pgrep không tìm được tiến trình bị ẩn bằng kỹ thuật đặc biệt (như rootkit), vì nó dựa trên dữ liệu tiến trình tiêu chuẩn. Với tiến trình con (child process), pgrep hỗ trợ tìm dựa vào PID cha bằng tùy chọn -P. Ví dụ: pgrep -P 1234 sẽ liệt kê các tiến trình con của tiến trình có PID 1234.
pgrep có hỗ trợ tìm tiến trình trên hệ thống đa lõi hoặc đa máy không?
pgrep
là công cụ tìm kiếm tiến trình (process) dựa trên tên hoặc thuộc tính của tiến trình chạy trên một máy chủ Linux duy nhất. Nó không hỗ trợ tìm tiến trình trên nhiều máy hoặc trên hệ thống phân tán đa máy (multi-node). Về đa lõi, pgrep
vẫn hoạt động bình thường vì hệ điều hành Linux quản lý tất cả các tiến trình chạy trên các lõi CPU của cùng một máy.
Lời kết
Lệnh pgrep
Linux là công cụ đơn giản nhưng rất mạnh mẽ giúp bạn tìm kiếm và quản lý tiến trình trên hệ thống Linux một cách nhanh chóng và hiệu quả. Qua bài viết này, bạn đã nắm được cách sử dụng pgrep
từ cơ bản đến nâng cao, cũng như hiểu rõ vai trò quan trọng của lệnh trong việc quản lý quy trình. Việc thành thạo pgrep
không chỉ giúp bạn tiết kiệm thời gian mà còn nâng cao khả năng xử lý và giám sát hệ thống. Cảm ơn bạn đã theo dõi bài viết!