Windows - Запуск процесу на тлі після закриття cmd


15

У мене є сценарій Python, який я хочу запустити як фоновий процес у Windows.

Я можу це зробити в Linux за допомогою:

python script.py &

а потім відключіть процес від терміналу за допомогою:

disown

У Windows поки що все це:

start /b python script.py

Однак якщо я закрию вікно CMD, сценарій припиняється. Чи є якась додаткова команда, яку мені тут не вистачає, щоб тримати сценарій на задньому плані?

Відповіді:


6

startмає вже бути правильним напрямком. Однак /bприкріплюємо його до тієї ж консолі. Тепер проблема полягає в тому, що коли вікно консолі буде закрите, будь-який процес, пов’язаний із цією консоллю, також буде закритий.

Можна або використовувати startбез нього /b, тоді він буде працювати в новій консолі. Якщо ви хочете запустити його у фоновому режимі без консольного вікна, тоді вам знадобиться використовувати VBScript або сторонній інструмент: Запустіть пакетний файл повністю прихованим способом

Однак у такому випадку ви більше не бачите висновку stdout / stderr. Ви можете перенаправити його у файл, загорнувши його у cmd /c your_command > stdout.txt 2> stderr.txtвиклик та запустивши цей метод одним із вищезгаданих методів (VBScript, сторонній інструмент, ...).

Також ви можете приховати власне вікно консолі перед виходом. Я тільки що написав невелику однорядкову програму, яка робить саме це (вихідний код в основному ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/hide_current_console.exe

Таким чином, ви можете використовувати start /b, і коли ви хочете "закрити" консоль (технічно приховати її), ви запустили hide_current_console & exitб який приховав консоль, а потім закрили процес cmd.exe (не процес python) - в один рядок, оскільки ви не можете набрати текст, exitколи консоль вже була прихована.


Звідки hide_current_consoleбереться? Не працює на ПК W10.
Btc Sources

1
Я перевірив його ще раз, він все ще працює. Звідки це: Будь ласка, прочитайте публікацію ще раз, я показав один рядок вихідного коду цього файлу та пов’язав зібраний файл skri_current_console.exe для завантаження ...
CherryDT

-2

Я виявив, що для мене добре працювали:

run python script.py

1
О, і на Linux замість background ( &) disownя б запропонував використовувати nohup.
nikc

5
Ця команда увійшла в Windows , CMD оболонки дає наступне повідомлення про помилку: 'run' is not recognized as an internal or external command, operable path or batch file..
Маршеп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.