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 thichmod +x test.py
Bắt đầu tập lệnh Python trong nềnBâ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ềnnohup /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ạyBạ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 raNế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