Lệnh ps trong Linux là công cụ dòng lệnh dùng để hiển thị thông tin về các tiến trình đang chạy trong hệ thống. Thông qua lệnh này, bạn có thể nhanh chóng kiểm tra trạng thái tiến trình, theo dõi mức sử dụng tài nguyên và hỗ trợ quản trị hệ thống hiệu quả hơn. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng lệnh ps trong Linux để xem thông tin tiến trình một cách nhanh chóng và chính xác.
Những điểm chính
- Khái niệm: Hiểu rõ lệnh
pslà công cụ chụp ảnh trạng thái tiến trình, cung cấp các mã định danh PID và lệnh hệ thống tại thời điểm thực thi. - Lý do cần sử dụng: Biết cách tận dụng lệnh
psđể xác định PID, giám sát hiệu suất CPU/RAM và phát hiện các tiến trình lỗi để tối ưu hóa tài nguyên server. - Phân biệt ps và top: Nắm vững sự khác biệt giữa chế độ xem tĩnh (ps) và động (top) để lựa chọn công cụ xác định hệ thống phù hợp cho từng tình huống.
- Các tùy chọn phổ biến: Làm chủ các hệ thống tham số theo phong cách BSD (aux) hoặc System V (-ef) để tùy biến thông tin đầu ra theo nhu cầu quản trị.
- Hướng dẫn sử dụng thực tế: Thành thạo kỹ năng liệt kê tiến trình toàn hệ thống, lọc dữ liệu theo tên bằng
grepvà hiển thị cấu trúc cây tiến trình trực quan. - Kiểm tra và xử lý lỗi: Biết cách giải mã các trạng thái tiến trình và khắc phục các lỗi cú pháp, lỗi hiển thị lệnh rác khi tìm kiếm.
- Câu hỏi thường gặp: Giải đáp các thắc mắc thường gặp liên quan đến lệnh ps.
Lệnh ps trong Linux là gì?
Lệnh ps trong Linux là một công cụ dòng lệnh được sử dụng để hiển thị trạng thái của các tiến trình đang hoạt động trên hệ thống. Lệnh này cung cấp một snapshot về các chương trình đang chạy tại thời điểm thực thi, kèm theo các thông tin quan trọng. Cụ thể, khi chạy ps mà không thêm tham số nào, lệnh này sẽ hiện ra danh sách các tiến trình đang chạy trong cửa sổ terminal hiện tại của bạn với 4 thông số cơ bản:
- PID (Process ID): Mã số định danh duy nhất của tiến trình.
- TTY: Loại terminal mà tiến trình đang chạy.
- TIME: Tổng thời gian CPU đã xử lý tiến trình đó.
- CMD: Tên câu lệnh đã khởi động tiến trình.

Lý do cần sử dụng lệnh ps Linux
Lệnh ps là công cụ được sử dụng khi bạn cần biết chính xác tiến trình nào đang chạy, ai là chủ sở hữu và câu lệnh nào đã gọi chúng. Các trường hợp phổ biến cần sử dụng lệnh này như sau:
- Xác định Process ID (PID): Lệnh ps sẽ cung cấp mã định danh duy nhất cần thiết để người dùng có thể buộc dừng các ứng dụng bị treo hoặc không phản hồi.
- Giám sát hiệu suất: Chạy lệnh ps sẽ giúp bạn phát hiện nhanh các tiến trình đang chiếm dụng quá nhiều tài nguyên CPU hoặc bộ nhớ gây chậm hệ thống.
- Kiểm tra trạng thái dịch vụ: Bạn có thể xác minh xem các phần mềm nền hoặc các script quan trọng có đang hoạt động hay không.
- Kiểm tra đường dẫn thực thi: Lệnh ps cho phép xem chi tiết câu lệnh và các tham số được sử dụng khi khởi chạy để đảm bảo chương trình đang chạy đúng cấu hình.
- Phát hiện tiến trình lỗi: Bạn có thể tìm ra các tiến trình ở trạng thái “Zombie” hoặc “Defunct” để tối ưu hóa tài nguyên khi chạy lệnh ps.

Cách phân biệt lệnh ps và lệnh top trong Linux
Lệnh ps cung cấp thông tin tĩnh tại thời điểm kiểm tra, trong khi lệnh top (hoặc htop) cung cấp thông tin động được cập nhật liên tục theo thời gian thực:
| Tiêu chí | Lệnh ps | Lệnh top |
|---|---|---|
| Cơ chế hoạt động | Tĩnh (Snapshot): Chỉ hiển thị trạng thái tại đúng thời điểm bạn gõ lệnh. | Động (Real-time): Cập nhật trạng thái hệ thống liên tục. |
| Giao diện | Dạng dòng lệnh. | Dạng bảng điều khiển. |
| Tương tác | Không: Bạn không thể điều khiển trực tiếp trên kết quả vừa hiện. | Có: Bạn có thể bấm phím tắt để sắp xếp, kill tiến trình ngay trên màn hình. |
| Mức tiêu thụ | Rất ít tài nguyên hệ thống. | Tốn tài nguyên hơn do phải quét và làm mới liên tục. |
| Mục đích chính | Tìm kiếm, lọc một tiến trình cụ thể. | Giám sát sức khỏe hệ thống. |
Các tùy chọn phổ biến của lệnh ps
| Tùy chọn ps | Chức năng | Cú pháp ví dụ |
|---|---|---|
| ps | Liệt kê các tiến trình của người dùng hiện tại trong terminal hiện tại. | ps |
| ps -e | Hiển thị tất cả tiến trình đang chạy. | ps -e |
| ps -f | Hiển thị định dạng đầy đủ, thêm cột UID, PID của tiến trình cha. | ps -f |
| ps aux | Hiển thị tất cả tiến trình dưới định dạng BSD/Unix. | ps aux |
| ps -ef | Hiển thị tất cả tiến trình dưới định dạng System V/POSIX. | ps -ef |
| ps -o | Chỉ định các cột đầu ra tùy chỉnh. | ps -o pid,user,cmd |
| ps –sort | Sắp xếp kết quả theo một cột cụ thể. | ps -eo pid,pcpu --sort -pcpu |
Hướng dẫn dùng lệnh ps Linux để xem tiến trình
1. Xem các tiến trình cơ bản
Để xem các tiến trình liên quan đến phiên terminal hiện tại của người dùng đang đăng nhập, bạn thực hiện lệnh như sau:
psKết quả thường chỉ hiển thị hai tiến trình đó là tiến trình shell hiện tại là bash hoặc zsh và lệnh ps mà bạn vừa thực thi.

2. Xem tất cả các tiến trình (BSD Style)
Lệnh sau sẽ hiển thị tất cả các tiến trình đang chạy trên hệ thống, thuộc mọi người dùng và bao gồm cả các tiến trình nền:
ps aux
Trong đó:
- a: Hiển thị các tiến trình của tất cả người dùng.
- u: Định dạng chi tiết, hiển thị chủ sở hữu, mức sử dụng CPU/Memory.
- x: Bao gồm các tiến trình không được đính kèm vào terminal (TTY).
- Các cột quan trọng:
USER(chủ sở hữu),PID,%CPU,%MEM,STAT(trạng thái),COMMAND(lệnh thực thi).
3. Xem tất cả các tiến trình (System V Style)
Để hiển thị tất cả các tiến trình bằng cú pháp System V (POSIX), bạn thực hiện lệnh như sau:
ps -ef
Kết quả hiển thị sẽ tương tự như ps aux, nhưng các cột đầu ra sẽ có một số sự khác biệt. Cột PPID (Parent Process ID) trong kết quả này rất quan trọng giúp bạn xác định tiến trình cha đã tạo ra tiến trình hiện tại.
4. Lọc thông tin tiến trình bằng grep
Bạn có thể tìm kiếm một tiến trình cụ thể theo tên hoặc từ khóa với cú pháp như sau:
ps aux | grep <tên tiến trình>Ví dụ, để tìm kiếm các tiến trình web server Apache, bạn thực thi lệnh dưới đây:
ps aux | grep apache2
Kết quả là lệnh ps aux sẽ tạo ra danh sách tất cả tiến trình, sau đó kết quả được chuyển qua ký tự pipe (|) để lệnh grep lọc các dòng chứa từ khóa apache2.
5. Xem cây tiến trình
Để hiển thị mối quan hệ phân cấp giữa các tiến trình giúp người quản trị dễ dàng xác định nguồn gốc của các tiến trình nền, bạn thực hiện lệnh sau:
ps -ef --forest
Trong đó, tùy chọn --forest sẽ thêm một biểu đồ dạng ASCII minh họa cấu trúc cây, nối các tiến trình con với tiến trình cha của chúng (PPID).
6. Chỉ định các cột đầu ra tùy chỉnh
Để chỉ hiển thị những thông tin bạn thực sự cần, ví dụ như chỉ PID, chủ sở hữu và mức sử dụng bộ nhớ, bạn hãy thực hiện lệnh sau:
ps -o <cột 1>,<cột 2>,<cột 3>Ví dụ:
ps -eo pid,user,%mem,cmd
Tùy chọn -o (output) hoặc -eo (Extended output) sẽ cho phép bạn liệt kê chính xác các cột mong muốn, ví dụ như pid, user, %mem, cmd.
Kiểm tra kết quả và xử lý lỗi phổ biến khi dùng lệnh ps Linux
Kiểm tra kết quả thành công
Sau khi chạy lệnh ps, bạn hãy kiểm tra lại kết quả hiển thị để chắc chắn thông tin tiến trình là chính xác, tập trung vào các cột quan trọng như:
- PID và COMMAND: Bạn cần đảm bảo PID của tiến trình và lệnh thực thi (COMMAND) được hiển thị chính xác.
- STAT (Trạng thái): Bạn kiểm tra cột trạng thái của tiến trình với các trạng thái thường gặp bao gồm:
- R: Running (Đang chạy).
- S: Sleeping (Ngủ).
- Z: Zombie (Tiến trình dừng hoạt động).
Lưu ý
Xử lý lỗi phổ biến khi chạy lệnh ps
1. Lỗi: ps: invalid option — Z
Lỗi này xảy ra khi bạn sử dụng kết hợp các tùy chọn của BSD style (không có dấu gạch ngang) với các tùy chọn của System V Style (có dấu gạch ngang). Để khắc phục, bạn hãy luôn dùng nhất quán giữa ps aux hoặc ps -ef và tuyệt đối không dùng ps -aux hay ps ef.

2. Lỗi: Lệnh grep bị hiển thị trong kết quả
Khi bạn dùng lệnh ps aux | grep <tên>, lệnh grep cũng là một tiến trình đang chạy và chứa chuỗi tìm kiếm của bạn, do đó lệnh này sẽ hiện lên trong danh sách kết quả. Để khắc phục, bạn sửa lệnh grep bằng cách thêm dấu ngoặc vuông vào từ khóa tìm kiếm để ẩn tiến trình grep khỏi kết quả, ví dụ, thay vì tìm apache2, bạn hãy tìm [a]pache2.
Câu hỏi thường gặp
Làm thế nào để dừng một tiến trình sau khi tìm thấy bằng lệnh ps?
Lệnh ps chỉ có chức năng hiển thị thông tin, không thể tác động trực tiếp lên tiến trình. Sau khi bạn tìm được PID của tiến trình cần dừng bằng lệnh ps, bạn hãy sử dụng lệnh kill kèm theo số PID đó.
Trạng thái “Z” (Zombie) trong cột STAT nghĩa là gì?
Tiến trình có trạng thái Z (Zombie) là tiến trình đã kết thúc việc thực thi nhưng vẫn còn tồn tại trong bảng tiến trình của hệ thống. Bạn không thể dùng lệnh kill để kết thúc trình Zombie trực tiếp, mà thường phải xử lý tiến trình cha hoặc chờ hệ thống tự dọn dẹp.
Làm sao để sắp xếp các tiến trình theo mức tiêu thụ RAM thay vì CPU?
Bạn có thể sử dụng tùy chọn –sort để sắp xếp kết quả. Để sắp xếp theo dung lượng bộ nhớ giảm dần, bạn hãy dùng lệnh sau:
ps aux –sort -%mem
Qua bài viết này, hy vọng bạn đã nắm vững cách sử dụng lệnh ps Linux để quản lý và theo dõi các tiến trình trên hệ thống. Mặc dù hiện nay có nhiều công cụ giám sát thời gian thực như top hay htop, nhưng ps vẫn giữ vai trò quan trọng nhờ khả năng trích xuất thông tin chi tiết, linh hoạt và dễ dàng kết hợp với các lệnh lọc khác. Hãy thực hành thường xuyên để làm chủ công cụ mạnh mẽ này, giúp hệ thống của bạn luôn vận hành trong trạng thái tốt nhất.




