Quy trình nền chạy Python

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

Một cách là sử dụng pythonw, pythonw là phép nối của python+không có cửa sổ đầu cuối, tôi. e. chạy python không có cửa sổ terminal. 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

Đây là hình nền. py là tập tin

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

tên tệp python. py &

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

giết -9 {{id đã theo sau}} &

kill được viết tắt cho quá trình giết trong khi -9 được sử dụng để yêu cầu 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 mình, bạn có thể xóa đầu ra trong một tệp bằng cách sử dụng

tên tệp python. py > tên tệpToFlush &

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

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

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

tên tệp python -u. py > FileToFlush &

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

Nếu bạn đóng terminal trước khi kết thúc chương trình, tất cả các tiến trình được thực thi bởi terminal sẽ dừng lại, Tình trạng treo máy phát sinh để khắc phục sự cố, bạn cần sử dụng lệnh Nohup như hình bên dưới Nohup sẽ đảm bảo rằng tiến trình đó sẽ chạy cho đến khi kết thúc. . nohup là viết tắt của no hangup

nohup tên tệp python -u. py

Bây giờ bạn không cần xóa đầu ra trong bất kỳ tệp nào vì tiện ích Nohup tạo một tệp có tên Nohup. ra trong khi thực hiện. Nó sẽ giống như tệp nhật ký. Tên của phần điền đầu ra được tạo bởi Nohup sẽ phản ánh trên. Để kết thúc quá trình 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 không thể, bạn cần tìm kiếm tệp Chỉ cần sử dụng lệnh sau

ps rìu. tên tệp grep. py

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

Cách dễ nhất để chạy tập lệnh python chạy trong nền là sử dụng tính năng cronjob [trong macOS và Linux]. Trong windows, chúng ta có thể sử dụng Windows Task Scheduler

Trong Mac hoặc Linux, hãy mở terminal bằng lệnh sau để kiểm tra xem công việc nào đang chạy trong nền

crontab -l

Bây giờ, để chỉnh sửa danh sách, gõ lệnh sau

crontab -e

Sau đó, bạn có thể cung cấp đường dẫn của tệp tập lệnh python của mình để chạy vào một thời điểm cụ thể bằng cách cung cấp thông tin chi tiết về thời gian. Bây giờ hãy nhập thông tin sau và nhấn CTRL+O and CTRL+Xđể lưu và thoát

Hiện tại tôi có hai công việc được lên lịch để chạy trong nền như có thể thấy từ ảnh chụp màn hình bên dưới

Công việc đầu tiên sẽ chạy vào phút thứ 15 của Giờ thứ 11 ngày 27 của tháng. Công việc này định kỳ quét các chi tiết liên hệ của các văn phòng hiện trường và lưu trữ chúng trong tệp csv

Đường dẫn này là cần thiết nếu bạn đã cài đặt nhiều phiên bản Python và

chmod +x test.py
0 sẽ đảm bảo rằng trình thông dịch Python đầu tiên trong biến môi trường
chmod +x test.py
1 của bạn được sử dụng. Bạn cũng có thể mã hóa cứng đường dẫn của trình thông dịch Python của mình [e. g.
chmod +x test.py
2], nhưng điều này không linh hoạt và không di động được 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

chmod +x test.py

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 bỏ qua tín hiệu gác máy. Đ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, đừng quên thêm

chmod +x test.py
3 để tập lệnh chạy ở chế độ nền

nohup /path/to/test.py &

Nếu bạn không thêm shebang vào tệp, thay vào đó, 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

chmod +x test.py
4, trừ khi bạn chỉ định tệp đầu ra như ở đây

________số 8_______

Tìm và giết tiến trình đang chạy

Bạn có thể tìm thấy quy trình và Id quy trình của nó bằng lệnh này

ps ax | grep test.py

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

kill PID

Cũng có thể tắt tiến trình bằng cách sử dụng pkill, nhưng hãy đảm bảo rằng bạn đã kiểm tra xem có tập lệnh nào khác đang chạy cùng tên không

pkill -f test.py

Bộ đệm đầu ra

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

chmod +x test.py
4 trong khi thực thi, bạn có thể nhận thấy rằng các kết quả đầu ra không được ghi vào tệp này cho đến khi quá trình thực thi kết thúc. Điều này xảy ra do bộ đệm đầu ra. Nếu bạn thêm cờ
chmod +x test.py
6, bạn có thể tránh hiện tượng đệm đầu ra như thế này

Làm thế nào một quá trình được thực hiện như quá trình nền?

Để đặt tiến trình nền trước vào nền, trước tiên chúng ta phải đặt tiến trình ở chế độ ngủ, sau đó đặt tiến trình đó vào nền. .
Thực hiện lệnh để chạy quy trình của bạn
Nhấn CTRL+Z để đưa tiến trình vào trạng thái ngủ
Chạy lệnh bg để đánh thức tiến trình và chạy nó ở chế độ nền

Điều gì xảy ra trong nền khi bạn chạy tệp Python?

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

Chủ Đề