Giảm 50% tất cả các gói, thời gian có hạn. Bắt đầu từ $2.48/mo
10 phút còn lại
Máy chủ & Hệ điều hành

Thành thạo quản lý tiến trình – Lệnh ps aux Linux

Ada Lovegood By Ada Lovegood Đọc 10 phút Cập nhật 11 tháng 7 năm 2024
lệnh linux ps aux

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.

ps aux sắp xếp pid

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

mối quan hệ cha-con của các tiến trình Linux

Để 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ọc các tiến trình Linux bằng lệnh ps

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:

ví dụ lệnh ps aux grep

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

Xem mức ưu tiên của tất cả các tiến trình bằng lệnh ps

  • 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.

bắt đầu một quy trình với mức độ ưu tiên cao mặc định

  • 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.

Hosting Linux VPS

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êm

Kế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.

Chia sẻ

Bài viết mới từ blog

Tiếp tục đọc.

Những Ứng Dụng Self-Hosted Tốt Nhất Bạn Có Thể Chạy với Cosmos Cloud hình ảnh bìa với các bảng điều khiển ứng dụng xung quanh một bảng điều khiển Cosmos.
Máy chủ & Hệ điều hành

Những Ứng Dụng Self-Hosted Tốt Nhất Bạn Có Thể Chạy với Cosmos Cloud: Tệp, Media, Mật khẩu, Tự động hóa & Hơn nữa!

Sau khi bạn đã thiết lập Cosmos Cloud và muốn xem những ứng dụng nào phù hợp với nó, hoặc có thể bạn chưa quyết định sử dụng Cosmos và chỉ muốn biết nó phù hợp với quy trình làm việc của bạn như thế nào

Nick BạcNick Bạc Đọc trong 16 phút
Portainer so với Cosmos Cloud để Quản lý Ứng Dụng Docker bìa có sơ đồ thiết lập hybrid và khối điều hành so với khối truy cập.
Máy chủ & Hệ điều hành

Portainer so với Cosmos Cloud: Lựa Chọn Tốt Nhất cho Quản Lý Ứng Dụng Docker

Nếu bạn đã biết về Docker và chỉ muốn cách rõ ràng hơn để chạy một stack ứng dụng phát triển, đây là câu trả lời ngắn gọn cho Portainer so với Cosmos Cloud. Portainer là lựa chọn mạnh hơn cho

Nick BạcNick Bạc 14 phút đọc
Cosmos Cloud so với CasaOS so với Umbrel biểu đồ tính năng hiển thị ba đường dẫn self-hosted trong một thế giới mạng đám mây trừu tượng.
Máy chủ & Hệ điều hành

Cosmos Cloud so với CasaOS so với Umbrel: Nền Tảng Self-Hosted Nào Phù Hợp với Thiết Lập của Bạn?

Câu trả lời ngắn gọn là CasaOS vẫn là nơi dễ nhất để bắt đầu, Umbrel có cảm giác được tuyển chọn sạch nhất, và Cosmos Cloud có ý nghĩa hơn khi bạn muốn kiểm soát chặt chẽ hơn đối với

Nick BạcNick Bạc 11 phút đọc

Sẵn sàng triển khai? Từ $2.48/tháng.

Cloud độc lập, hoạt động từ 2008. AMD EPYC, NVMe, 40 Gbps. Hoàn tiền trong 14 ngày.