Làm cách nào để liệt kê các quy trình python trong Linux?
Bạn có thể lấy một quy trình theo tên bằng cách tìm kiếm trong tất cả các quy trình con đang hoạt động để tìm một quy trình có tên đã cho Show
Trong hướng dẫn này, bạn sẽ khám phá cách lấy một quy trình theo tên trong Python Bắt đầu nào Mục lục Cần lấy một quy trình theo tênMột tiến trình là một thể hiện đang chạy của một chương trình máy tính Mỗi chương trình Python được thực thi trong một Quy trình, đây là phiên bản mới của trình thông dịch Python. Quá trình này có tên MainProcess và có một luồng được sử dụng để thực hiện các hướng dẫn của chương trình được gọi là MainThread. Cả quy trình và luồng đều được tạo và quản lý bởi hệ điều hành bên dưới Đôi khi chúng ta có thể cần tạo các tiến trình con mới trong chương trình của mình để thực thi mã đồng thời Python cung cấp khả năng tạo và quản lý các quy trình mới thông qua cơ chế đa xử lý. lớp quy trình Bạn có thể tìm hiểu thêm về đa xử lý trong hướng dẫn
Trong đa xử lý, chúng ta có thể cần lấy một quy trình theo tên Điều này có thể vì nhiều lý do, chẳng hạn như
Làm thế nào chúng ta có thể nhận được một quá trình theo tên? Chạy các vòng lặp của bạn bằng cách sử dụng tất cả các CPU, tải xuống cuốn sách MIỄN PHÍ của tôi để tìm hiểu cách thực hiện Cách lấy quy trình theo tênThư viện chuẩn Python không cung cấp cơ chế tìm kiếm thông qua các quy trình theo tên Thay vào đó, chúng ta có thể tự phát triển chức năng này Trong phần này, chúng ta sẽ khám phá cách chúng ta có thể tìm kiếm một quy trình theo tên của nó Tên quy trìnhCác quy trình Python có tên Chúng có thể truy cập thông qua thuộc tính tên trên đa xử lý. Ví dụ lớp quy trình cho quy trình Ví dụ 1 2 3 .. . # lấy tên quy trình tên = quy trình. tên Tên quy trình không phải là duy nhất Tên mặc định được gán cho các quy trình cố gắng là duy nhất, e. g. Quy trình-1, Quy trình-2, v.v. Tên của các quy trình có thể được thay đổi bất cứ lúc nào bởi chính quy trình đó hoặc quy trình khác Bạn có thể tìm hiểu thêm về tên quy trình trong hướng dẫn
Như vậy, chúng ta không thể dựa vào tên của một quá trình nói chung là duy nhất Tuy nhiên, trong ứng dụng của mình, chúng tôi có thể gán các tên riêng biệt và có ý nghĩa cho các quy trình. Những tên này sau đó có thể được sử dụng duy nhất Liệt kê các quy trìnhĐể có được một quy trình theo tên, chúng ta cần có thể có được một danh sách tất cả các quy trình, sau đó tìm kiếm thông qua chúng Trong Python, chúng tôi không thể trực tiếp lấy danh sách tất cả các quy trình Thay vào đó, chúng ta có thể lấy danh sách tất cả các tiến trình con đang hoạt động cho tiến trình cha hiện tại Điều này có sẵn thông qua Ví dụ 1 2 3 .. . # lấy tất cả các tiến trình con quy trình = đa xử lý. active_children() Tìm kiếm quá trìnhKhi chúng tôi có một danh sách các quy trình đang hoạt động, chúng tôi có thể tìm kiếm một quy trình có tên đã cho Điều này có thể đạt được bằng cách lặp qua danh sách các quy trình và kiểm tra tên của từng quy trình với tên được cung cấp Ví dụ 1 2 3 4 5 6 .. . # tìm một tiến trình có tên cho quy trình trong quy trình. # kiểm tra xem có trùng khớp nếu xử lý. tên == tên. #. Sau khi tìm thấy, chúng ta có thể thực hiện một số hành động, chẳng hạn như
Bây giờ chúng ta đã biết cách tìm kiếm một quy trình theo tên của nó, hãy xem một số ví dụ đã hoạt động Bị bối rối bởi API mô-đun đa xử lý? Nhận một tiến trình con theo tênChúng ta có thể khám phá cách lấy một phiên bản quy trình theo tên Trong ví dụ này, chúng tôi sẽ bắt đầu một bộ quy trình con sẽ chặn tất cả trong một thời gian. Quá trình mẹ sau đó sẽ tìm kiếm một quá trình theo tên của nó và báo cáo tất cả các chi tiết của nó Đầu tiên, chúng ta có thể phát triển chức năng được sử dụng để tìm kiếm một quy trình theo tên Hàm lấy tên của tên quy trình để tìm kiếm 1 2 3 # trả về tiến trình con có tên hoặc không def get_process_by_name(tên): # Đầu tiên, chúng ta có thể lấy danh sách tất cả các tiến trình con đang hoạt động cho tiến trình cha hiện tại 1 2 3 .. . # lấy tất cả các tiến trình con quy trình = active_children() Tiếp theo, chúng ta có thể lặp lại danh sách các phần tử con đang hoạt động và kiểm tra xem tên của quy trình có khớp với tên được cung cấp không. Nếu vậy, chúng ta có thể trả lại phiên bản quy trình 1 2 3 4 5 6 .. . # trả lại tiến trình với tên cho quy trình trong quy trình. # kiểm tra xem có trùng khớp nếu xử lý. tên == tên. trả lại quy trình Nếu không, chúng tôi sẽ trả về giá trị Không, để cho biết rằng không tìm thấy quy trình nào có tên 1 2 3 .. . # không có trận đấu trả lại Không có Kết hợp điều này lại với nhau, hàm kill_child_process_by_name() hoàn chỉnh với những thay đổi này được liệt kê bên dưới Làm cách nào để kiểm tra xem một tiến trình có đang chạy trong Linux hay không bằng python?wait() return output # Đây là chức năng bạn có thể sử dụng def isThisRunning( process_name ). đầu ra = findThisProcess( process_name ) nếu lại. tìm kiếm ('đường dẫn/của/quy trình'+tên_quy trình, đầu ra) là Không có. trả về Sai khác. return True # Ví dụ về cách sử dụng if isThisRunning('some_process') == False. in ("Không chạy") khác. .
Làm cách nào tôi có thể xem tất cả các quy trình trong Linux?Nhập ps aux để xem tất cả tiến trình đang chạy trong Linux. Ngoài ra, bạn có thể dùng lệnh top hoặc lệnh htop để xem tiến trình đang chạy trong Linux.
Làm cách nào tôi có thể nhận được danh sách tất cả các quy trình?Bạn cần sử dụng lệnh ps . Nó cung cấp thông tin về các quy trình hiện đang chạy, bao gồm số nhận dạng quy trình (PID) của chúng. Cả Linux và UNIX đều hỗ trợ lệnh ps để hiển thị thông tin về tất cả tiến trình đang chạy. Lệnh ps cung cấp ảnh chụp nhanh các quy trình hiện tại.
Làm cách nào để lấy tất cả PID trong python?Chúng tôi có thể lấy pid cho quy trình hiện tại thông qua os. hàm getpid() . Chúng tôi cũng có thể lấy pid cho quy trình gốc thông qua hệ điều hành. hàm getppid(). |