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?

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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.