Cụm lệnh ps aux trong Linux là một dạng mở rộng của lệnh ps, dùng để hiển thị danh sách toàn bộ tiến trình đang chạy trên hệ thống một cách đầy đủ, chi tiết nhất. Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về cách sử dụng ps aux để liệt kê tất cả tiến trình đang sử dụng, đồng thời xác định tiến trình nào đang chiếm dụng nhiều RAM nhất.
Những điểm chính
- Khái niệm: Hiểu rõ lệnh
ps auxlà gì, ý nghĩa của từng tùy chọn và cách sử dụng lệnh để hiển thị toàn bộ tiến trình đang chạy. - Hướng dẫn sử dụng chi tiết: Nắm vững quy trình từng bước, từ việc thực thi lệnh cơ bản, tùy chỉnh kết quả với
headvàawk, đến các hành động chẩn đoán và xử lý tiến trình. - Khi nào nên dùng
ps: Phân biệt được khi nào nên dùngpsđể lấy báo cáo tức thời và khi nào nên dùngtop/htopđể giám sát theo thời gian thực. - Ứng dụng thực tế: Biết cách áp dụng
ps auxvào các tác vụ quản trị hệ thống như giám sát, gỡ lỗi. - Kết hợp lệnh: Hướng dẫn kết hợp với các lệnh khác như
grep,sortđể lọc và sắp xếp thông tin hiệu quả. - Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các câu hỏi thực tế về việc sử dụng
pstrong kịch bản tự động, cách lọc theo người dùng và phương pháp phát hiện tiến trình bất thường.
Cụm lệnh ps aux là gì?
ps aux là cú pháp mở rộng của lệnh ps (Process Status), giúp người dùng liệt kê và kiểm soát toàn bộ các tiến trình đang chạy của mọi người dùng trên hệ thống dưới dạng một danh sách chi tiết tại thời điểm hiện tại. Lệnh ps aux được đánh giá là một công cụ tiện ích nền tảng trong môi trường giao diện dòng lệnh của Linux và Unix.

Thành thạo lệnh ps aux là kỹ năng thiết yếu đối với người dùng Linux, giúp nắm bắt toàn diện mọi hoạt động của hệ thống. Nhờ khả năng cung cấp dữ liệu chi tiết, lệnh này trở thành công cụ đắc lực trong việc giám sát hiệu suất, gỡ lỗi và quản lý tiến trình một cách tối ưu.
Cách dùng ps aux để kiểm tra các tiến trình chiếm dụng RAM
Bước 1: Thực thi lệnh ps aux
Thay vì chạy lệnh ps aux cơ bản rồi tự mình tìm kiếm, bạn hãy dùng lệnh đã được tối ưu dưới đây để yêu cầu ps xếp những tiến trình chiếm dụng RAM nhiều nhất lên trên cùng.
ps aux --sort=-rss
Giải thích lệnh:
a: Hiển thị tiến trình của tất cả người dùng.u: Hiển thị theo định dạng user-oriented (chi tiết hơn).x: Hiển thị cả các tiến trình không được chạy từ một terminal.--sort=-rss:sort: Yêu cầu sắp xếp kết quả.rss: Sắp xếp dựa trên cột RSS (Resident Set Size).-: Dấu trừ phía trước có nghĩa là sắp xếp theo thứ tự giảm dần (descending).
Giải thích ý nghĩa của từng cột dữ liệu khi sử dụng các lệnh như ps aux:
USER: Người dùng sở hữu tiến trình.PID: Process ID, mã định danh duy nhất của tiến trình.%MEM: Phần trăm bộ nhớ RAM mà tiến trình đang sử dụng.- VSZ: Bộ nhớ ảo (Virtual Size), thường không phải là con số bạn cần quan tâm.
RSS– Resident Set Size: Là lượng RAM vật lý thực tế mà tiến trình đang chiếm dụng, được tính bằng Kilobytes (KB).COMMAND: Toàn bộ lệnh đã khởi chạy tiến trình.
Bước 2: Tùy chỉnh kết quả và phân tích
Danh sách từ lệnh trên có thể rất dài và cột RSS (tính bằng KB) thường khó đọc, bạn hãy kết hợp thêm các công cụ khác để có một báo cáo gọn gàng và trực quan.
1. Lấy 10 tiến trình đầu bảng:
Bạn sử dụng lệnh head để lấy 10 tiến trình chiếm nhiều RAM nhất:
# Lấy 11 dòng (1 dòng tiêu đề + 10 tiến trình)
ps aux --sort=-rss | head -n 11Kết hợp hiển thị là một báo cáo Top 10 tiến trình chiếm dụng RAM được thể hiện gọn gàng, dễ đọc và được xếp hạng chính xác.
ps aux --sort=-rss | head -n 11 | awk 'NR>1 {$6=int($6/1024)"M";}{ print;}'
2. Chuyển đổi RSS sang MB
Con số 1572864 (KB) thường gây khó xác định và tính toán hơn 1536M (MB), vì vậy bạn có thể dùng awk để tự động chuyển đổi đơn vị.
ps aux --sort=-rss | head -n 11 | awk 'NR==1{print}; NR>1{printf "%-10s %-5s %-5s %-5s %-10s %-7s %s\n", $1, $2, $3, $4, $5, int($6/1024)"M", $11}'Lệnh awk có nhiệm vụ chính là định dạng lại đầu ra cho thẳng hàng và chuyển đổi cột thứ 6 ($6 – cột RSS) sang MB.
Bước 3: Đánh giá và xử lý
Khi đã xác định được tiến trình, ví dụ: một process java có PID 12345 đang dùng 2GB RAM, bạn có thể thực hiện các bước tiếp theo:
1. Kiểm tra nguyên nhân: Bạn hãy xác định tại sao ứng dụng Java dùng nhiều RAM và kiểm tra log của ứng dụng. Có thể tiến trình này đang bị rò rỉ bộ nhớ (memory leak) hoặc đang xử lý một tác vụ nặng đột xuất.
2. Khởi động lại: Nếu có thể, bạn hãy khởi động lại dịch vụ để giải phóng tài nguyên bằng cách thực thi lệnh sau:
sudo systemctl restart my-java-app3. Dừng tiến trình: Nếu tiến trình không phản hồi, bạn có thể chạy lệnh dưới đây buộc tiến trình dừng lại.
# Gửi tín hiệu yêu cầu dừng (an toàn hơn, nên thử trước):
kill 12345
# Nếu không được, buộc dừng (lựa chọn cuối cùng):
kill -9 12345Nên dùng ps hay top/htop?
- Dùng
pskhi: Bạn cần một báo cáo tức thời về trạng thái bộ nhớ, hoặc cần lấy dữ liệu để ghi log, hoặc sử dụng trong các kịch bản (script) tự động giám sát. - Dùng
top/htopkhi: Bạn cần theo dõi sự thay đổi của bộ nhớ theo thời gian thực trên một giao diện tương tác.
Lệnh ps aux --sort=-rss là một công cụ nhanh chóng, mạnh mẽ và luôn sẵn có. Bằng cách kết hợp lệnh này với head và awk, bạn có thể tạo ra một báo cáo gọn gàng, chính xác và ngay lập tức khoanh vùng được các tiến trình đang gây ra vấn đề về bộ nhớ.

Ứng dụng của ps aux trong quản trị hệ thống
Giám sát tình trạng và tài nguyên của các tiến trình
Ứng dụng cơ bản và phổ biến nhất của ps aux là giám sát hệ thống, bằng cách cung cấp một cái nhìn tổng quan tức thì về tất cả các tiến trình đang chạy, lệnh này cho phép quản trị viên nhanh chóng đánh giá tình trạng của máy chủ.
Bạn có thể kiểm tra xem một dịch vụ quan trọng, như máy chủ web Apache hoặc cơ sở dữ liệu MySQL, có đang hoạt động hay không. Đồng thời, việc theo dõi các cột %CPU và %MEM giúp giám sát chặt chẽ mức độ tiêu thụ tài nguyên của từng ứng dụng, từ đó phát hiện sớm các xu hướng bất thường trước khi chúng trở thành sự cố nghiêm trọng.

Khắc phục sự cố và gỡ lỗi
Khi hệ thống đột nhiên trở nên chậm hoặc không phản hồi, việc sử dụng lệnh ps aux sẽ giúp xác định nhanh chóng nguyên nhân gây ra sự cố bằng cách chỉ ra các tiến trình đang tiêu thụ tài nguyên một cách bất thường.
Nếu một tiến trình nào đó chiếm một tỷ lệ CPU hoặc bộ nhớ quá cao và duy trì trong thời gian dài, đó có thể là một dấu hiệu cảnh báo sớm cho các vấn đề tiềm ẩn như vòng lặp vô hạn, rò rỉ bộ nhớ hoặc một lỗi phần mềm cần được khắc phục.
Hỗ trợ quản lý và điều khiển tiến trình
ps aux không trực tiếp thay đổi trạng thái của các tiến trình, nhưng sẽ cung cấp thông tin đầu vào quan trọng cho các lệnh quản lý khác. Bằng cách xác định PID (Process ID) của một tiến trình, người dùng có thể thực hiện các hành động điều khiển một cách chính xác.
Ví dụ, nếu một ứng dụng bị treo, bạn có thể sử dụng ps aux để tìm PID của nó, sau đó dùng lệnh kill <PID> để chấm dứt tiến trình đó. Tương tự, bạn có thể sử dụng lệnh nice hoặc renice cùng với PID để thay đổi mức độ ưu tiên của một tiến trình, đảm bảo các tác vụ quan trọng luôn được ưu tiên tài nguyên CPU.

Hướng dẫn kết hợp ps aux với các lệnh khác
Lọc kết quả đầu ra bằng lệnh grep
Trong một hệ thống đang hoạt động, danh sách tiến trình từ ps aux có thể rất dài, gây khó khăn cho việc tìm kiếm một tiến trình cụ thể. Bằng cách kết hợp hai lệnh, bạn có thể dễ dàng lọc và chỉ hiển thị những dòng chứa thông tin mình cần.
- Cú pháp lọc cơ bản: Để tìm tất cả các tiến trình liên quan đến trình duyệt “firefox”, bạn có thể sử dụng lệnh:
$ps aux | grep firefox
- Đếm số lượng tiến trình: Để không chỉ lọc mà còn đếm số lượng tiến trình tìm thấy, bạn có thể kết hợp thêm lệnh
wc -l:
$ps aux | grep firefox | wc -l
Sắp xếp kết quả theo tiêu chí tài nguyên
Khi cần xác định các tiến trình đang tiêu tốn nhiều tài nguyên nhất, việc sắp xếp kết quả đầu ra là vô cùng hữu ích. Lệnh $ps$ trên các hệ thống Linux hiện đại hỗ trợ tùy chọn --sort để thực hiện việc này một cách trực tiếp.
- Sắp xếp theo mức sử dụng CPU: Để liệt kê các tiến trình theo thứ tự sử dụng CPU giảm dần, hãy dùng lệnh:
$ps aux --sort=-%cpu
- Sắp xếp theo mức sử dụng bộ nhớ: Tương tự, để sắp xếp theo mức sử dụng RAM giảm dần:
$ps aux --sort=-%mem
- Sắp xếp theo nhiều tiêu chí: Bạn có thể kết hợp nhiều tiêu chí sắp xếp. Ví dụ, lệnh sau sẽ sắp xếp theo bộ nhớ giảm dần, sau đó theo CPU giảm dần đối với các tiến trình có cùng mức sử dụng bộ nhớ:
$ps aux --sort=-%mem,-%cpu
- Quy tắc sắp xếp: Dấu gạch ngang (
-) đứng trước tên cột biểu thị thứ tự sắp xếp giảm dần, trong khi dấu cộng (+) biểu thị thứ tự tăng dần.
Tùy chỉnh định dạng hiển thị cột
- Tùy chỉnh các cột hiển thị: Nếu bạn chỉ quan tâm đến một vài thông tin cụ thể. Tùy chọn
-ocho phép bạn chỉ định chính xác những cột nào cần được hiển thị. Ví dụ:
$ps -eo pid,user,%cpu,%mem,command --sort=-%mem
Lệnh này chỉ hiển thị các cột PID, người dùng, %CPU, %MEM và lệnh, đồng thời sắp xếp kết quả theo mức sử dụng bộ nhớ.
- Xem cấu trúc cây tiến trình: Để hiểu rõ hơn về mối quan hệ cha – con giữa các tiến trình, tùy chọn
--forestsẽ định dạng đầu ra dưới dạng một cây phân cấp, rất trực quan và hữu ích.
$ps aux --forest
Câu hỏi thường gặp
Vì sao nên ưu tiên dùng lệnh ps khi lập các kịch bản giám sát tự động cho VPS?
Vì lệnh ps cung cấp dữ liệu trạng thái tiến trình theo từng thời điểm, dễ lưu vào file, thuận tiện tích hợp vào script tự động và phân tích log lịch sử nhanh chóng.
Lệnh ps aux kết hợp với head/awk có phù hợp cho VPS dung lượng nhỏ không?
Hoàn toàn phù hợp vì các lệnh này rất nhẹ, xử lý dữ liệu nhanh, không tốn tài nguyên và có thể chạy thường xuyên mà không làm ảnh hưởng hiệu năng hệ thống VPS nhỏ.
Có thể kiểm tra mức độ chiếm dụng RAM của tiến trình theo từng user cụ thể bằng ps aux không?
Có, bạn chỉ cần dùng thêm grep lọc theo tên user mong muốn trên đầu ra của ps aux.
Làm thế nào để biết tiến trình nào bất thường qua báo cáo ps aux?
Bạn hãy chú ý các tiến trình nằm ở đầu danh sách khi sắp xếp giảm dần RSS hoặc %MEM, đặc biệt nếu lệnh hay ứng dụng đó không thuộc dạng dịch vụ quan trọng thì nên kiểm tra kỹ để xử lý kịp thời.
Có thể dùng kết quả ps aux kiểm tra nguyên nhân server bị treo RAM không?
Có thể, việc xác định tiến trình ngốn RAM nhất qua báo cáo ps aux là bước đầu để tìm ra nguyên nhân gây treo máy, phục vụ công tác tối ưu hoặc điều chỉnh cấu hình server.
Làm thế nào để tìm và dừng (kill) một tiến trình?
Quy trình gồm 2 bước:
– Tìm PID: Dùng ps aux | grep <tên_tiến_trình> để tìm ra PID (Process ID) của tiến trình bạn muốn dừng.
– Dừng tiến trình: Dùng lệnh kill <PID>. Ví dụ, nếu PID của tiến trình là 1234, bạn chạy lệnh kill 1234. Nếu tiến trình không dừng, bạn có thể dùng tín hiệu mạnh hơn: kill -9 1234.
Qua bài viết này, bạn đã nắm được cách sử dụng lệnh ps aux và các tùy chọn nâng cao để kiểm tra, phân tích những tiến trình đang chiếm dụng RAM trên hệ thống Linux. Việc kết hợp các lệnh như –sort=-rss, head và awk sẽ giúp bạn sắp xếp, lọc và chuyển đổi số liệu một cách trực quan, dễ đọc nhất. Áp dụng các thao tác hướng dẫn ở trên sẽ giúp bạn giảm thiểu rủi ro treo máy, quá tải RAM và nâng cao hiệu quả vận hành server lâu dài.




