Bạn có ít nhất năm tab khác đang mở trên trình duyệt, cố gắng tìm câu trả lời cho một vấn đề Linux mà bạn gặp phải không?
Hành vi này không riêng biệt với bạn hay con người nói chung. Máy cũng thực hiện nhiều tác vụ cùng lúc. Giống như bạn, Linux cũng là một hệ thống đa nhiệm và có nhiều quy trình chạy đồng thời. Dù bạn là nhà phát triển sử dụng Linux chuyên nghiệp hay là người dùng bình thường làm việc với Linux hàng ngày, bạn cần hiểu những quy trình song song này để có toàn quyền kiểm soát hệ thống của mình. Quản lý quy trình và kiểm soát hệ thống là những khía cạnh thiết yếu khi chạy một hệ thống Linux.
Để quản lý hiệu quả các quy trình chạy trên hệ thống, theo dõi thời gian thực những gì đang diễn ra, nắm bắt tổng quan các quy trình nền, và kiểm soát tài nguyên hệ thống, bạn cần có kiến thức kỹ thuật về quản lý quy trình. Lệnh ps aux là một lệnh mạnh mẽ đóng vai trò quan trọng trong quản lý quy trình và kiểm soát hệ thống. Trong bài viết này, chúng tôi sẽ tìm hiểu thêm về lệnh ps aux và các trường hợp sử dụng của nó. Chúng tôi cũng sẽ đề cập đến những kiến thức cơ bản về cách các quy trình Linux hoạt động.
Hiểu về Quản lý Quy trình trong Linux
Khi làm việc với Linux, hầu hết các tương tác của chúng ta với hệ thống đều dưới dạng các lệnh. Trong Linux, một quy trình là sự thực thi của một lệnh. Quản lý quy trình Linux liên quan đến việc điều khiển các quy trình mà một lệnh đã khởi động. Bạn có thể kết thúc một quy trình, bắt đầu một quy trình, hoặc tiếp tục các quy trình đã bị dừng. Bạn cũng có thể điều khiển các lệnh đang được thực thi.
Có hai loại quy trình Linux:
- Tiến trình nền trước
- Các tiến trình chạy nền
Quy trình Tiền cảnh Linux
Quy trình tiền cảnh là quy trình đang được thực thi một cách tích cực và thường yêu cầu tương tác liên tục và thời gian thực với người dùng. Khi quy trình tiền cảnh hoạt động, việc thực thi các quy trình khác bị tạm dừng. Vì vậy, bạn không thể chạy bất kỳ lệnh nào khác. Quy trình tiền cảnh nhận đầu vào từ bàn phím dưới dạng đầu vào tiêu chuẩn hoặc stdin. Để tránh nhầm lẫn, stdin và stdout là các luồng dữ liệu Linux cùng với stderr. Về cơ bản, đó là cách người dùng tương tác với quy trình và cung cấp dữ liệu cho nó. Có đầu ra tiêu chuẩn hoặc stdout được tạo ra bởi quy trình dựa trên chức năng và đầu vào của nó. Quy trình tiền cảnh là chế độ thực thi mặc định trong Linux.
Quy trình Nền Linux
Quy trình nền là đối lập hoàn toàn với quy trình tiền cảnh vì chúng không yêu cầu tương tác với người dùng và không chiếm toàn bộ không gian của thiết bị đầu cuối, cho phép thực thi các quy trình khác. Loại đầu vào và đầu ra của quy trình nền cũng khác. Chúng thường không nhận stdin. Tuy nhiên, kết quả của quy trình có thể được hiển thị dưới dạng stdout. Hiển thị đầu ra của các quy trình nền diễn ra đồng thời với đầu ra của các quy trình tiền cảnh khác. Vì vậy, bạn có thể thấy tiến trình hoặc kết quả của quy trình nền mà không làm gián đoạn các hành động quan trọng khác.
Vì việc thực thi một loạt tác vụ trong Linux phụ thuộc vào dòng lệnh, quy trình tiền cảnh có thể gây phiền toái, trong khi chạy các quy trình ở chế độ nền giải phóng thiết bị đầu cuối của bạn để làm việc khác. Vì vậy, đặt một tác vụ tiền cảnh ở chế độ nền là một điều hợp lý ở đây. Để gửi một quy trình đến nền bạn nên dừng nó trước không cho nó thực thi ở tiền cảnh. Điều này được thực hiện đơn giản bằng cách nhấn CTRL+Z. Sau đó, bằng cách nhập lệnh bg, quy trình đã dừng sẽ chạy lại ở chế độ nền. Lệnh fg sẽ đảo ngược quá trình và đưa nó trở lại tiền cảnh.
Trạng thái Quy trình; Cú pháp, Lệnh và Giải thích Đầu ra
Quản lý quy trình hiệu quả trong Linux yêu cầu hiểu trạng thái của các quy trình có thể được giám sát bằng lệnh ps aux. Nhưng trước khi đi sâu vào lệnh ps aux, chúng ta hãy tìm hiểu về các trạng thái quy trình khác nhau. Mặc dù có nhiều loại quy trình và trạng thái quy trình khác nhau, đây là bảng những trạng thái phổ biến nhất:
| Trạng thái xử lý | mô tả | |
| Đang chạy(R) | Quy trình đang chạy và sử dụng tài nguyên CPU. | |
| Đang ngủ | Có thể bị ngắt (S) | Quy trình đang chờ một đầu vào hoặc sự kiện cụ thể để bắt đầu chạy lại. Nó hiện không sử dụng tài nguyên CPU. Khi tài nguyên có sẵn hoặc các tín hiệu được gửi, quy trình bắt đầu lại. |
| Không thể ngắt được (D) | Giống như một quy trình đang ở trạng thái ngủ có thể bị gián đoạn, quy trình ngủ không thể bị gián đoạn cũng không sử dụng tài nguyên CPU. Sự khác biệt duy nhất là nó không phản ứng với tín hiệu, nó chỉ quay trở lại khi tài nguyên có sẵn. | |
| Đã dừng (T) | Một đầu vào từ người dùng hoặc một sự kiện cụ thể đã tạm dừng quy trình. Quy trình ở trạng thái dừng không sử dụng bất kỳ tài nguyên CPU nào. | |
| Chết(X) | Quy trình đã bị kết thúc và không còn tồn tại nữa. | |
Hiểu rõ về các trạng thái quy trình này là một khía cạnh quan trọng để quản lý và khắc phục sự cố hiệu quả trong các hệ thống Linux. Bây giờ, chúng tôi sẽ đề cập đến cú pháp và lệnh để lấy trạng thái quy trình trong Linux, cũng như cách giải thích đầu ra.
Cú pháp và Lệnh để Lấy Trạng Thái Tiến Trình
Bạn có thể lấy trạng thái tiến trình trong Linux bằng cú pháp cơ bản của lệnh ps:
ps [process name]
Ngoài ra còn có các tùy chọn khác được sử dụng với lệnh ps:
đến: Tùy chọn này hiển thị danh sách toàn diện tất cả các tiến trình đang chạy trên hệ thống. Nó cung cấp thông tin như ID tiến trình (PID), ID tiến trình cha (PPID), CPU và mức sử dụng bộ nhớ, cùng với trạng thái tiến trình. Đầu ra từ lệnh ps aux có tính trực quan cao hơn nhiều, dễ đọc hơn và chứa nhiều thông tin hữu ích hơn so với lệnh ps cơ bản.
ef: Tùy chọn này hiển thị danh sách định dạng đầy đủ các tiến trình kèm theo chi tiết bổ sung, bao gồm cấu trúc phân cấp tiến trình dưới dạng cây.
l: Tùy chọn này cung cấp định dạng danh sách dài, trình bày thông tin chi tiết hơn về các tiến trình.
Hiểu về đầu ra
Khi bạn thực thi lệnh ps với các tùy chọn mong muốn, nó tạo ra một đầu ra đại diện cho các tiến trình đang chạy trên hệ thống của bạn. Đầu ra bao gồm các cột hiển thị các thuộc tính tiến trình khác nhau, gồm ID tiến trình (PID), ID tiến trình cha (PPID), CPU, mức sử dụng bộ nhớ, trạng thái tiến trình, loại thiết bị đầu cuối và tên lệnh.
Dưới đây là giải thích ý nghĩa của từng cột:
PID: Cột này hiển thị ID duy nhất của tiến trình.
TTY: Cột này hiển thị loại thiết bị đầu cuối mà người dùng đã đăng nhập.
THỜI GIAN: Cột này cho biết CPU được sử dụng bởi tiến trình này trong bao nhiêu phút và giây.
CMD: Cột này đại diện cho tên của lệnh khởi động tiến trình này.
Phân tích thông tin được cung cấp bởi lệnh ps giúp bạn hiểu sâu hơn về hoạt động của máy Linux của mình.
Kỹ Thuật Nâng Cao của ps Để Quản Lý Tiến Trình Bằng Lệnh ps
Hãy khám phá một số tính năng nâng cao của lệnh ps và cách chúng có thể được sử dụng hiệu quả:
1. Sắp xếp Quy trình
Lệnh ps aux có thể được sử dụng để sắp xếp đầu ra cuối cùng dựa trên các cột khác nhau. Ví dụ: bạn có thể sắp xếp các tiến trình theo ID tiến trình hoặc mức sử dụng CPU để xem chúng theo thứ tự mong muốn.
Dưới đây là ví dụ về sắp xếp các tiến trình dựa trên ID tiến trình bằng ps aux:
ps aux –-sort pid
Lệnh head được sử dụng để chỉ lấy năm hàng đầu của đầu ra.

2. Trực quan hóa Cây Tiến Trình
Nếu bạn muốn thấy rõ mối quan hệ cha-con của các tiến trình, bạn có thể sử dụng lệnh ps với tùy chọn forest.
ps -aux --forest

Để xem mối quan hệ giữa các tiến trình theo mô hình cây, bạn cũng có thể sử dụng lệnh pstree. Lệnh này sẽ tạo ra đầu ra dễ hiểu hơn và minh họa rõ ràng cấu trúc phân cấp giữa các tiến trình. Để sử dụng lệnh này, gõ lệnh sau:
pstree [pid or username]
Bằng cách cung cấp cho lệnh này một PID, bạn yêu cầu lệnh coi tiến trình đó là gốc của cây.
3. Quy Trình Lọc
Giả sử bạn muốn làm việc với một nhóm tiến trình cụ thể, chẳng hạn như liệt kê tất cả các tiến trình của một người dùng nào đó. Bạn có thể lọc tiến trình dựa trên một đặc tính nào đó bằng lệnh ps. Trong ví dụ này, chúng tôi đã lọc các tiến trình theo tên người dùng.
ps -u [username]

Lệnh ps aux grep có thể lọc các process dựa trên bất kỳ mẫu hoặc từ khóa nào bạn cung cấp. Xem đoạn mã dưới đây để hiểu rõ hơn:

Lệnh này liệt kê tất cả các tiến trình và chuyển đầu ra cho lệnh grep để lọc danh sách dài đó theo ID tiến trình. Trong hình trên, bạn có thể thấy danh sách tất cả các tiến trình có chứa số 15 trong thông tin của chúng.
Để tìm hiểu thêm về lệnh ps và các tính năng của nó, bạn có thể đọc trang hướng dẫn của lệnh này. Đoạn mã dưới đây sẽ hiển thị trang hướng dẫn cho bạn:
man ps
Quản lý Ưu tiên Tác vụ trong Linux
Để giải thích rõ hơn cách quản lý tiến trình hoạt động trong Linux, chúng ta cần tìm hiểu về mức độ ưu tiên của tiến trình và cách thay đổi nó. Hãy tưởng tượng một tình huống mà bạn đang chạy nhiều tiến trình, và CPU bị quá tải với các tác vụ. Nếu bạn muốn quản lý tài nguyên để hoạt động bình thường trong tình huống này, bạn cần thay đổi mức độ ưu tiên của các tác vụ đang chạy. Mỗi tiến trình trong Linux có một giá trị ưu tiên. Giá trị này giúp kernel ưu tiên các tác vụ. Số mức độ ưu tiên dao động từ -20 đến 19, với 19 là tác vụ ít quan trọng nhất và -20 là tác vụ cần xử lý gấp nhất. Tiến trình có mức độ ưu tiên cao nhất nhận được nhiều thời gian CPU hơn so với các tiến trình khác. Các giá trị ưu tiên thường được gọi là giá trị "nice", với các giá trị nice thấp hơn cho thấy mức độ ưu tiên cao hơn.
Bạn có thể dùng lệnh nice và renice để phân bổ tài nguyên hệ thống một cách hiệu quả.
Nhưng trước khi thay đổi mức độ ưu tiên của các quy trình, hãy cùng khám phá trường hợp sử dụng đầu tiên của lệnh ps.
- Hiển thị mức ưu tiên hiện tại của tất cả các tiến trình bằng lệnh ps:
Lệnh này liệt kê tất cả các process cùng với ID process (PID), tên lệnh và mức ưu tiên hiện tại (giá trị nice):
ps -eo pid,cmd,nice

- Khởi động một tiến trình với mức ưu tiên cao mặc định bằng lệnh nice:
Bạn có thể khởi động một quy trình với mức độ ưu tiên tùy chọn bằng lệnh này:
nice -n [priority] [command]
Thay thế [priority] bằng giá trị âm mong muốn để đặt mức độ ưu tiên và [command] bằng lệnh bạn muốn thực thi.
I'm ready to translate UI labels to Vietnamese. Please provide the English text you'd like me to translate.

- Thay đổi độ ưu tiên của một lệnh đang chạy:
renice -n [priority] -p [PID]
Thay thế [PID] bằng ID của tiến trình bạn muốn thao tác.
Nếu bạn cần một máy Linux mạnh mẽ để thực hiện mọi loại tác vụ, thì Linux VPS là giải pháp phù hợp với bạn. Cloudzy cung cấp các gói Linux VPS với hệ điều hành yêu thích của bạn được cài đặt sẵn. Với những ưu điểm đáng kể như hỗ trợ 24/7, chính sách hoàn tiền 30 ngày và bảo đảm thời gian hoạt động 99,95%, Cloudzy đã giữ giá cả ở mức thấp. Giá của chúng tôi cho Linux VPS bắt đầu từ chỉ $4,95/tháng.
Lấy cho mình một Linux VPS loại tiết kiệm hoặc cao cấp để lưu trữ trang web hoặc máy tính để bàn từ xa, với giá rẻ nhất hiện có. VPS Chạy trên Linux KVM để tăng hiệu quả và hoạt động trên phần cứng mạnh mẽ với bộ nhớ NVMe SSD để tăng tốc độ.
Đọc thêmKết luận
Tóm lại, việc nắm vững quản lý tiến trình và kiểm soát hệ thống là điều bắt buộc đối với các quản trị viên hệ thống, những người đam mê Linux muốn tìm hiểu thêm, và những người dùng Linux thông thường. Học về khả năng và chức năng của lệnh ps sẽ giúp bạn dễ dàng hơn khi học quản lý tiến trình. Đó là lý do bài viết này đã thảo luận những trường hợp sử dụng quan trọng của lệnh ps cũng như cung cấp cho bạn đọc một giới thiệu về các tiến trình Linux.
Câu hỏi thường gặp
Lệnh ps aux trong Linux là gì?
Lệnh ps aux Linux là một lệnh thường được sử dụng trong Linux để lấy thông tin về các tiến trình đang chạy. Nó cung cấp danh sách toàn diện các tiến trình ở định dạng dễ đọc, bao gồm ID tiến trình (PID), CPU và mức sử dụng bộ nhớ, trạng thái thực thi và các chi tiết quan trọng khác.
Hai loại tiến trình trong Linux là gì?
Tiến trình nền trước và tiến trình nền. Tiến trình nền trước chiếm dụng terminal khi chạy và không cho phép các lệnh khác thực thi. Tiến trình nền chạy ở background và không sử dụng toàn bộ terminal.
Làm cách nào để xem danh sách các tiến trình đang chạy trên hệ thống Linux của tôi?
Bạn có thể xem danh sách các tiến trình đang chạy trên hệ thống Linux bằng các lệnh như ps, top, hoặc htop. Ví dụ, lệnh Linux ps aux cung cấp thông tin chi tiết về tất cả các tiến trình đang chạy.