Windows - Chạy tiến trình trên nền sau khi đóng cmd


15

Tôi có một tập lệnh Python mà tôi muốn chạy như một quá trình nền trên Windows.

Tôi có thể làm điều đó trên Linux với:

python script.py &

và sau đó ngắt kết nối quá trình từ thiết bị đầu cuối với:

disown

Trên Windows, tất cả những gì tôi có cho đến nay là:

start /b python script.py

Tuy nhiên, nếu tôi đóng cửa sổ CMD, tập lệnh sẽ ngừng chạy. Có bất kỳ lệnh bổ sung nào mà tôi đang thiếu ở đây để giữ cho tập lệnh chạy trên nền không?

Câu trả lời:


6

startnên đã đúng hướng. Tuy nhiên, /bgắn nó vào cùng một bàn điều khiển. Bây giờ vấn đề là khi một cửa sổ giao diện điều khiển bị đóng, bất kỳ quá trình liên quan đến giao diện điều khiển này cũng sẽ bị đóng.

Bạn có thể sử dụng startmà không cần /b, sau đó nó sẽ chạy trong một giao diện điều khiển mới. Nếu bạn muốn chạy nó trong nền mà không có cửa sổ giao diện điều khiển, thì bạn sẽ cần sử dụng công cụ VBScript hoặc bên thứ ba: Chạy một tệp bó theo cách hoàn toàn bị ẩn

Tuy nhiên, trong trường hợp đó, bạn sẽ không thấy đầu ra stdout / stderr nữa. Mặc dù vậy, bạn có thể chuyển hướng tệp đến một tệp bằng cách gói nó trong một cmd /c your_command > stdout.txt 2> stderr.txtcuộc gọi và bắt đầu cuộc gọi này thông qua một trong các phương pháp đã nói ở trên (VBScript, công cụ của bên thứ ba, ...).

Ngoài ra, bạn cũng có thể ẩn cửa sổ giao diện điều khiển của riêng mình trước khi thoát. Tôi vừa viết một chương trình một dòng nhỏ thực hiện chính xác điều đó (về cơ bản là mã nguồn ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/ leather_cản_console.exe

Bằng cách này, bạn có thể sử dụng start /bvà khi bạn muốn "đóng" bàn điều khiển của mình (về mặt kỹ thuật ẩn nó), bạn sẽ chạy hide_current_console & exitđể ẩn bàn điều khiển và sau đó đóng quá trình cmd.exe (không phải quá trình python) - trong một dòng, vì bạn không thể gõ exitsau khi bảng điều khiển đã bị ẩn.


Nơi nào hide_current_consoleđến từ đâu? Không hoạt động trên PC W10.
Nguồn Btc

1
Tôi đã thử nó một lần nữa, nó vẫn hoạt động. Xuất phát từ đâu: Vui lòng đọc lại bài đăng, tôi đã chỉ ra một dòng mã nguồn mà tập tin này có và liên kết một tập tin hide_civerse_console.exe được biên dịch để tải xuống ...
CherryDT

-2

Tôi thấy những điều sau đây làm việc tốt cho tôi:

run python script.py

1
Ồ, và trên Linux thay vì nền ( &) và disowntôi sẽ đề nghị sử dụng nohup.
nikc

5
Lệnh đó được nhập vào shell cmd của Windows sẽ báo lỗi sau : 'run' is not recognized as an internal or external command, operable path or batch file..
markshep
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.