Hướng dẫn how do i run a python script in the background process? - làm cách nào để chạy tập lệnh python trong quá trình chạy nền?

Hình ảnh từ Wikimedia Commons

19 tháng 10 năm 2018

Mục lục

  • Làm cho tập lệnh python có thể thực thi
  • Bắt đầu tập lệnh Python trong nền
  • Tìm và tiêu diệt quá trình chạy
  • Bộ đệm đầu ra

Đây là một hướng dẫn nhanh về cách chạy tập lệnh Python trong nền trong Linux.

Làm cho tập lệnh python có thể thực thi

Đầu tiên, bạn cần thêm một dòng Shebang trong tập lệnh Python trông giống như sau:

Đường dẫn này là cần thiết nếu bạn có nhiều phiên bản Python được cài đặt và /usr/bin/env sẽ đảm bảo rằng trình thông dịch Python đầu tiên trong biến môi trường $$PATH của bạn được thực hiện. Bạn cũng có thể mã hóa đường dẫn của trình thông dịch Python của mình [ví dụ: #!/usr/bin/python3], nhưng điều này không linh hoạt và không thể di động trên các máy khác. Tiếp theo, bạn sẽ cần đặt quyền của tệp để cho phép thực thi:

Bắt đầu tập lệnh Python trong nền

Bây giờ bạn có thể chạy tập lệnh với Nohup mà bỏ qua tín hiệu treo. Điều này có nghĩa là bạn có thể đóng thiết bị đầu cuối mà không dừng thực thi. Ngoài ra, don không quên thêm

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
0 để tập lệnh chạy trong nền:

Nếu bạn không thêm shebang vào tệp, bạn có thể chạy tập lệnh bằng lệnh này:

nohup python /path/to/test.py &

Đầu ra sẽ được lưu trong tệp

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
1, trừ khi bạn chỉ định tệp đầu ra như ở đây:

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &

Tìm và tiêu diệt quá trình chạy

Bạn có thể tìm thấy quy trình và ID quy trình của nó với lệnh này:

Nếu bạn muốn dừng thực thi, bạn có thể giết nó bằng lệnh giết:

Cũng có thể tiêu diệt quy trình bằng cách sử dụng PKILL, nhưng hãy chắc chắn rằng bạn kiểm tra xem không có tập lệnh khác chạy cùng tên:

Bộ đệm đầu ra

Nếu bạn kiểm tra tệp đầu ra

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
1 trong quá trình thực thi, bạn có thể nhận thấy rằng các đầu ra không được ghi vào tệp này cho đến khi thực hiện kết thúc. Điều này xảy ra vì bộ đệm đầu ra. Nếu bạn thêm cờ
nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
3, bạn có thể tránh bộ đệm đầu ra như thế này:

nohup python -u ./test.py &

Hoặc bằng cách chỉ định tệp nhật ký:

nohup python -u ./test.py > output.log &

Trên Windows, bạn có thể sử dụng

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
4 để chạy tập lệnh Python làm quy trình nền:

Các tập lệnh Python [các tệp có tiện ích mở rộng

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
5] sẽ được thực thi bởi
nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
6 theo mặc định. Việc thực thi này mở một thiết bị đầu cuối, vẫn mở ngay cả khi chương trình sử dụng GUI. Nếu bạn không muốn điều này xảy ra, hãy sử dụng tiện ích mở rộng
nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
7 sẽ khiến tập lệnh được thực thi bởi
nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
4 theo mặc định [cả hai tệp thực thi đều được đặt ở cấp cao nhất của thư mục cài đặt Python của bạn]. Điều này ngăn chặn cửa sổ đầu cuối khi khởi động.

Ví dụ,

C:\ThanosDodd\Python3.6\pythonw.exe C:\\Python\Scripts\moveDLs.py

Để làm cho tập lệnh của bạn chạy liên tục, bạn có thể sử dụng

nohup /path/to/test.py > output.log &
nohup python /path/to/test.py > output.log &
9 để lập lịch sự kiện:

Mô -đun lịch trình xác định một lớp thực hiện Trình lập lịch sự kiện có mục đích chung

import sched
import time

event_schedule = sched.scheduler[time.time, time.sleep]

def do_something[]:
    print["Hello, World!"]
    event_schedule.enter[30, 1, do_something, [sc,]]

event_schedule.enter[30, 1, do_something, [s,]]
event_schedule.run[]

Bây giờ để tiêu diệt một quy trình nền trên Windows, bạn chỉ cần chạy:

taskkill /pid processId /f

Trong đó

nohup python -u ./test.py &
0 là ID của quá trình bạn muốn giết.

Hãy cho chúng tôi xem cách chạy chương trình Python hoặc dự án trong nền, tức là chương trình sẽ bắt đầu chạy từ thiết bị thời điểm đang bật và dừng khi tắt hoặc khi bạn đóng nó. Chỉ cần chạy một lần để đảm bảo chương trình không có lỗi miễn phí

Một cách là sử dụng Pythonw, Pythonw là sự kết hợp của Python+mà không có cửa sổ cuối, tức là chạy Python mà không có cửa sổ đầu cuối. Bạn có thể sử dụng nó bằng cách chạy dòng sau trên thiết bị đầu cuối:pythonw, pythonw is the concatenation of python+without terminal window, i.e. run python without terminal window. You can use it by running the following line on the terminal:

Pythonw

Ở đây, nền tảng.py là tệp:

Trong Linux và Mac, để chạy các tệp PY trong nền bạn chỉ cần thêm và ký sau khi sử dụng lệnh, nó sẽ cho trình thông dịch chạy chương trình trong nền & nbsp;

python fileName.py && nbsp;

Nó sẽ chạy chương trình trong nền cũng đồng thời bạn có thể sử dụng thiết bị đầu cuối. Sẽ xử lý ID cho quy trình nền, nếu bạn muốn bạn cũng có thể tiêu diệt quy trình bằng cách sử dụng vì bạn có thể giết nó bằng Ctrl+C, để giết nó, mở một phiên đầu cuối khác và sử dụng lệnh

giết -9 {{id got after}} &

Kill được viết tắt để giết quá trình trong khi -9 được sử dụng để giết nó ngay lập tức, trạng thái tương ứng sẽ được cập nhật. Để có được đầu ra của bạn, bạn có thể xóa nó trong một tệp & nbsp; bằng cách sử dụng & nbsp;

python filename.py> filenametoflush &

Nó sẽ tạo ra đầu ra, tức là đầu ra xả trong tệp nhưng nó được cập nhật trong bộ nhớ bộ đệm, bạn phải chờ chấm dứt chương trình để phản ánh đầu ra trong tệp đĩa cứng. Để giải quyết điều này, bạn chỉ cần nói với trình thông dịch Python rằng don lồng sử dụng các bước bộ nhớ đệm:

Kết thúc/giết hiện đang chạy tệp

Bây giờ sử dụng tiện ích & nbsp;

& nbsp; python -u filename.py> filetoflush &

Nó sẽ trực tiếp đặt đầu ra vào tệp bạn đã chọn.

Nếu bạn đóng thiết bị đầu cuối trước khi kết thúc chương trình, tất cả các quy trình được thực hiện bởi thiết bị đầu cuối sẽ dừng lại, một tình huống treo Bạn đóng thiết bị đầu cuối cha mẹ. Nohup đứng không có hangup & nbsp;nohup command as shown below nohup will assure that process is running till the end whether you close parent terminal. nohup stands for no hangup 

NOHUP PYTHON -U FILENAME.PY & NBSP;

Bây giờ bạn không cần phải xóa đầu ra trong bất kỳ tệp nào vì NoHUP Utility tạo ra một tệp có tên Nohup.out trong khi thực thi. Nó sẽ giống như tệp nhật ký. Tên của đầu ra điền được tạo bởi Nohup sẽ phản ánh. Để chấm dứt thực thi này, bạn sẽ cần quy trình ID, không có vấn đề gì nếu bạn có thể nhớ hoặc nếu bạn có thể, bạn cần tìm kiếm tệp chỉ cần sử dụng lệnh sau

PS AX | GREP FILENAME.PY

GREP là để tìm kiếm mẫu, nó sẽ phản ánh ID quá trình trên thiết bị đầu cuối chỉ cần tiêu diệt nó bằng cách sử dụng ID -9 ID. Bây giờ quá trình bị chấm dứt

Làm cách nào để chạy kịch bản Python trong thiết bị đầu cuối nền?

Chạy bằng Nohup hoặc &.
Giữ ID quy trình nếu nó trả về ..
Kiểm tra ID quy trình nếu nó không trả lại với PS AUX | grep.
Nếu muốn dừng quá trình chạy thủ công giết & hoặc giết -9 cho nohup ..

Làm cách nào để chạy một tập lệnh trong nền?

Để chạy một lệnh hoặc một tập lệnh vào nền, hãy chấm dứt nó bằng một dấu hiệu ampersand và ở cuối như được hiển thị.Lưu ý: Kết thúc lệnh bằng dấu ampersand không tách ra lệnh từ bạn.terminate it with an ampersand sign [&] at the end as shown. NOTE: Ending the command with the ampersand sign does not detach the command from you.

Làm cách nào để giữ một tập lệnh Python chạy?

Sử dụng một bộ lập lịch và có nó chạy cứ sau x phút.Có chính quy trình, hãy kiểm tra xem liệu có nhiều hơn 1 quy trình cùng tên đang chạy, nếu vậy, thoát [trước đó + quá trình này vẫn đang chạy].. Have the process itself, check to see if there are more than 1 processes of the same name running, if so, exit [previous + this process is still running].

Nohup Python là gì?

Nohup đứng cho không bị treo cổ.NOHUP PYTHON -U FILENAME.PY.Bây giờ bạn không cần phải xóa đầu ra trong bất kỳ tệp nào vì NoHUP Utility tạo ra một tệp có tên NOHUP.OUT trong khi thực thi.Nó sẽ giống như tệp nhật ký.Tên của đầu ra điền được tạo bởi Nohup sẽ phản ánh.no hangup. nohup python -u filename.py. Now you don't need to flush output in any file as nohup utility generates a file named nohup.out while executing. It will be like log file. The name of the output fill generated by nohup will reflect on.

Bài Viết Liên Quan

Chủ Đề