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

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

Mộ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

  • Đa xử lý trong Python. Hướng dẫn hoàn chỉnh

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ư

  • Chúng tôi không có pid của quá trình
  • Báo cáo chi tiết quá trình
  • Gửi tín hiệu tới quy trình, chẳng hạn như SIGKILL để tiêu diệt nó

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

Thư 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ình

Cá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

  • Cách thay đổi tên quy trình trong Python

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ình

Khi 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ư

  • Trả lại quá trình với tên
  • Truy xuất thông tin chi tiết của quy trình, chẳng hạn như pid
  • Gửi tín hiệu đến quá trì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ý?
Tải xuống bảng cheat PDF MIỄN PHÍ của tôi

Nhận một tiến trình con theo tên

Chú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[].

Chủ Đề