Hướng dẫn python os system run in background - hệ điều hành python chạy ở chế độ nền

Cả đầu ra bắt giữ và chạy trên nền với threading

Như đã đề cập trong câu trả lời này, nếu bạn nắm bắt đầu ra bằng

#!/usr/bin/env python3

import sys
import time

for i in range[4]:
    print[i + int[sys.argv[1]]]
    sys.stdout.flush[]
    time.sleep[0.5]
0 và sau đó cố gắng
#!/usr/bin/env python3

import sys
import time

for i in range[4]:
    print[i + int[sys.argv[1]]]
    sys.stdout.flush[]
    time.sleep[0.5]
1, thì các khối quy trình.

Tuy nhiên, có những trường hợp bạn cần điều này. Ví dụ: tôi muốn khởi chạy hai quy trình nói chuyện qua một cổng giữa chúng và lưu stdout của họ vào tệp nhật ký và stdout.

Mô -đun threading cho phép chúng tôi làm điều đó.

Đầu tiên, hãy xem cách thực hiện phần chuyển hướng đầu ra một mình trong câu hỏi này: Python popen: Viết vào stdout và đăng nhập đồng thời

Then:

main.py

#!/usr/bin/env python3

import os
import subprocess
import sys
import threading

def output_reader[proc, file]:
    while True:
        byte = proc.stdout.read[1]
        if byte:
            sys.stdout.buffer.write[byte]
            sys.stdout.flush[]
            file.buffer.write[byte]
        else:
            break

with subprocess.Popen[['./sleep.py', '0'], stdout=subprocess.PIPE, stderr=subprocess.PIPE] as proc1, \
     subprocess.Popen[['./sleep.py', '10'], stdout=subprocess.PIPE, stderr=subprocess.PIPE] as proc2, \
     open['log1.log', 'w'] as file1, \
     open['log2.log', 'w'] as file2:
    t1 = threading.Thread[target=output_reader, args=[proc1, file1]]
    t2 = threading.Thread[target=output_reader, args=[proc2, file2]]
    t1.start[]
    t2.start[]
    t1.join[]
    t2.join[]

sleep.py

#!/usr/bin/env python3

import sys
import time

for i in range[4]:
    print[i + int[sys.argv[1]]]
    sys.stdout.flush[]
    time.sleep[0.5]

Sau khi chạy:

./main.py

Stdout được cập nhật cứ sau 0,5 giây cho mỗi hai dòng chứa:

0
10
1
11
2
12
3
13

và mỗi tệp nhật ký chứa nhật ký tương ứng cho một quy trình nhất định.

Lấy cảm hứng từ: //eli.thegreenplace.net/2017/interacting-with-a-long-ricky-child-process-in-python/

Được thử nghiệm trên Ubuntu 18.04, Python 3.6.7.

  • Kiểm tra các quy trình và dịch vụ đang chạy
  • Chạy các quy trình nền trong Python
    • Bước 1: Tạo tệp Python với mã mà chúng tôi quan tâm đến việc chạy ở chế độ nền
    • Bước 2: Tạo một tập lệnh Python khác sẽ đánh thức quá trình Python trong nền
    • Gói xử lý phụ:
    • Bước 3: Thực hiện tệp Run_Process.py trên Trình chỉnh sửa mã
  • Giết một quá trình chạy
    • Sử dụng Trình quản lý nhiệm vụ:
    • Trên dấu nhắc lệnh:
    • Trong Python
  • Sự kết luận

Quy trình nền là các quy trình máy tính chạy đằng sau hậu trường. Ưu điểm cốt lõi của các quá trình chạy trong nền là bạn có thể thực hiện các nhiệm vụ khác ở phía trước. Trong bài viết này, chúng tôi sẽ thảo luận về cách chạy các quy trình nền bằng Python. & NBSP; Chúng tôi cũng sẽ thảo luận về cách kiểm tra và ngừng chạy các quy trình/ứng dụng.

Nội dung

  • 1 Kiểm tra các quy trình và dịch vụ đang chạy Checking Running Processes and Services
  • 2 Quy trình nền đang chạy trong Python Running background processes in Python
    • 2.1 Bước 1: Tạo tệp Python với mã mà chúng tôi quan tâm đến việc chạy ở chế độ nền Step 1: Create a Python file with the code we are interested in running in the background
    • 2.2 Bước 2: Tạo một tập lệnh Python khác sẽ đánh thức quá trình Python trong nền Step 2: Create another Python script that will wake up the Python process in the background
    • 2.3 Gói xử lý phụ: subprocess package:
    • 2.4 Bước 3: Thực hiện tệp Run_Process.py trên Trình chỉnh sửa mã Step 3: Execute the run_process.py file on the code editor
  • 3 Giết một quá trình chạy Killing a running process
    • 3.1 Sử dụng Trình quản lý tác vụ: Using Task Manager:
    • 3.2 trên dấu nhắc lệnh: On the command prompt:
    • 3.3 Trong Python In Python
  • 4. Kết luận Conclusion

Kiểm tra các quy trình và dịch vụ đang chạy

Để kiểm tra các quy trình đang chạy trong Windows, bạn có thể sử dụng ứng dụng Trình quản lý tác vụ hoặc chạy lệnh Lệnh Task TaskList trên dòng lệnh.

Một số quy trình hoặc dịch vụ bắt đầu khi máy tính được khởi động, trong khi người dùng khởi động rõ ràng những người khác. Một quá trình cũng có thể tạo ra một quá trình khác. Ví dụ, một quá trình Python được bắt đầu khi chạy tập lệnh Python trên trình chỉnh sửa hoặc một IDE như văn bản siêu phàm hoặc Studio Visual. & NBSP; Phần còn lại của các quy trình chạy theo văn bản siêu phàm trong trình quản lý tác vụ dưới đây chỉ là các quy trình hỗ trợ hai quy trình chính.

Vấn đề là một khi văn bản siêu phàm được đóng lại, tất cả các quy trình này đều được đóng lại - bao gồm cả chương trình được thực hiện trong Python. Đây là nơi hiểu làm thế nào để chạy quá trình nền đến.

Chạy các quy trình nền trong Python

Trong Python, bất kỳ gói nào trong hai gói, cụ thể là quy trình con và hệ điều hành, có thể được sử dụng để chạy các quy trình nền. Cú pháp chung là:subprocess and os, can be used to run background processes. The general syntax is:

subprocess:

import subprocess
subprocess.Popen[]

os:

import os
os.system[]

Để chứng minh cách các gói này hoạt động trong việc chạy một quy trình nền, hãy để chạy một tập lệnh Python. Ngay cả khi trình chỉnh sửa mã được đóng, quá trình python.exe sẽ tiếp tục chạy trong nền cho đến khi thực hiện hoàn tất. Điều này là do quá trình Python không được gắn vào quá trình giữ trình soạn thảo còn sống.

Bước 1: Tạo tệp Python với mã mà chúng tôi quan tâm đến việc chạy ở chế độ nền

Bước 2: Tạo một tập lệnh Python khác sẽ đánh thức quá trình Python trong nền

import time

with open["results.txt", "a+"] as fp:
    for i in range[5]:
        # Each loop should take around
        # 20 secs to execute. Total ~ 100 seconds
        time.sleep[20]
        fp.write[f"{i}\n"]

Gói xử lý phụ:

Bước 2: Tạo một tập lệnh Python khác sẽ đánh thức quá trình Python trong nền

Gói xử lý phụ:, subprocess, and os, to run the code in “process.py” in the background.

Bước 3: Thực hiện tệp Run_Process.py trên Trình chỉnh sửa mã

Gói xử lý phụ:

import subprocess
subprocess.Popen[["python", "process.py"], shell=True]

Bước 3: Thực hiện tệp Run_Process.py trên Trình chỉnh sửa mãos package, we have

import os
os.system["python process.py"]

Bước 3: Thực hiện tệp Run_Process.py trên Trình chỉnh sửa mã

Giết một quá trình chạy

Sử dụng Trình quản lý nhiệm vụ:

Giết một quá trình chạy

Sử dụng Trình quản lý nhiệm vụ:. This information can be found on the Task Manager or by running the tasklist on the command line. You might need to right-click on the title section and select PID and Process name on Task Manager [see below].

Trên dấu nhắc lệnh:

Sử dụng Trình quản lý nhiệm vụ:

Chọn quy trình, nhấp chuột phải và nhấp vào Tác vụ Kết thúc ở phía dưới bên phải của cửa sổ Trình quản lý.

Trên dấu nhắc lệnh:

  • Ví dụ, khi sử dụng PID Run, Taskill /PID /PID /F, ví dụ,, Task Taskill /PID 11024 /F, để tiêu diệt trình tải CTF.taskkill /PID /PID /F“, for example, “taskkill /PID 11024 /F” to kill CTF Loader.
  • Khi sử dụng tên hình ảnh, hãy chạy Task Taskill /IM /IM /F, & NBSP; Ví dụ, Taskkill /im ctfmon.exe /f, để tiêu diệt bộ tải CTF.taskkill /IM /IM /F”  for example “taskkill /IM ctfmon.exe /F” to kill CTF Loader.

Trong Python

Bạn có thể tiêu diệt các tác vụ đang chạy bằng cách sử dụng quá trình phụ hoặc hệ điều hành như sau [lưu ý rằng bạn cần nhập các gói này]:subprocess or os as follows [note that you need to import these packages]:

  • phụ
  • Os.System [Hồi Taskkill /IM ctfmon.exe /f,]

Lưu ý: Tùy chọn /F được cấp cho lệnh Taskkill là tùy chọn. Nó được sử dụng để chấm dứt một quá trình một cách mạnh mẽ. Tùy chọn này có thể cần thiết khi đóng một tác vụ được sử dụng bởi một quy trình khác, ví dụ. The /F option issued to the taskkill command is optional. It is used to terminate a process forcefully. This option might be needed when closing a task used by another process, for example.

PID thay đổi mỗi khi bạn mở quy trình/ứng dụng. Điều này có nghĩa là PID được sử dụng để tiêu diệt một tác vụ được tạo bởi một ứng dụng nhất định có thể không hoạt động khi ứng dụng được đóng và mở lại. Trong trường hợp như vậy, tên hình ảnh là một tùy chọn tốt hơn để sử dụng.. This means that the PID used to kill a task generated by a given app may not work when an app is closed and opened again. In such a case, Image Name is a better option to use.

Sự kết luận

Trong bài viết này, chúng tôi đã thảo luận về cách thức dậy một quá trình và tiếp tục chạy trong nền bằng Python. Chúng tôi đã chứng minh làm thế nào điều này được thực hiện bằng cách chạy một quy trình Python.exe trong nền [bạn có thể làm điều này với bất kỳ quy trình nào]. Cuối cùng, chúng tôi đã chỉ ra cách chấm dứt một quy trình đang chạy bằng cách sử dụng các gói Trình quản lý nhiệm vụ, dấu nhắc lệnh và Python.

Bài Viết Liên Quan

Chủ Đề