Windows - Execute o processo em segundo plano após fechar o cmd

15

Eu tenho um script Python que quero executar como um processo em segundo plano no Windows.

Eu posso fazer isso no Linux com:

python script.py &

e depois desconecte o processo do terminal com:

disown

No Windows, tudo o que tenho até agora é o seguinte:

start /b python script.py

No entanto, se eu fechar a janela do CMD, o script para de executar. Há algum comando extra que estou ausente aqui para manter o script em execução em segundo plano?

multigoodverse
fonte

Respostas:

6

startjá deve estar na direção certa. No entanto, /banexa-o ao mesmo console. Agora, o problema é que, quando uma janela do console é fechada, qualquer processo associado a esse console também será fechado.

Você pode usar startsem e /b, em seguida, ele será executado em um novo console. Se você quiser executá-lo em segundo plano sem uma janela do console, precisará usar uma ferramenta VBScript ou de terceiros: Execute um arquivo em lotes de uma maneira completamente oculta

No entanto, nesse caso, você não verá mais a saída stdout / stderr. No entanto, você pode redirecioná-lo para um arquivo, envolvendo-o em uma cmd /c your_command > stdout.txt 2> stderr.txtchamada e iniciando-o por um dos métodos mencionados acima (VBScript, ferramenta de terceiros, ...).

Como alternativa, você também pode ocultar sua própria janela do console antes de sair. Acabei de escrever um pequeno programa de uma linha que faz exatamente isso (o código-fonte é basicamente ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/hide_current_console.exe

Dessa forma, você pode usar start /be, quando quiser "fechar" seu console (tecnicamente o ocultar), você executará o hide_current_console & exitque ocultará o console e, em seguida, feche o processo cmd.exe (não o processo python) - em uma linha, pois você não pode digitar exitapós o console já estar oculto.

CherryDT
fonte
De onde hide_current_consolevem? Não funciona em um PC W10.
Btc Sources
1
Eu testei novamente, ainda funciona. De onde vem: Por favor, leia o post de novo, eu mostrei a uma linha de código fonte deste arquivo tem e associou um arquivo hide_current_console.exe compilado para download ...
CherryDT
-2

Eu achei o seguinte funcionou bem para mim:

run python script.py
nikc
fonte
1
Ah, e no Linux em vez de background ( &) e disowneu sugiro usar nohup.
nikc
5
Esse comando entrou em um Windows cmd shell dá o seguinte erro: 'run' is not recognized as an internal or external command, operable path or batch file..
markshep