Windows - Executa o processo no segundo plano depois de fechar o cmd

10

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, em seguida, 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 deixará de ser executado. Existe algum comando extra que esteja faltando aqui para manter o script em execução em segundo plano?

    
por multigoodverse 26.04.2016 / 15:49

2 respostas

5

start já deve estar na direção certa. No entanto, /b anexa ao mesmo console. Agora, o problema é que, quando uma janela de console é fechada, qualquer processo associado a esse console também será fechado.

Você pode usar start sem /b e, em seguida, ele será executado em um novo console. Se você quiser executá-lo em segundo plano sem uma janela de console, então você precisaria usar uma ferramenta VBScript ou de terceiros: Executar um arquivo em lotes de forma completamente oculto

No entanto, nesse caso, você não veria mais a saída stdout / stderr. Você poderia redirecioná-lo para um arquivo, agrupando-o em uma chamada cmd /c your_command > stdout.txt 2> stderr.txt e iniciando este através de um dos métodos acima mencionados (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) ): link

Dessa forma, você pode usar start /b e, quando quiser "fechar" seu console (tecnicamente ocultá-lo), você executará hide_current_console & exit , o que ocultaria o console e fecharia o processo cmd.exe (não o processo python) - em uma linha, já que você não pode digitar exit depois que o console já estava oculto.

    
por 26.04.2016 / 16:13
0

Eu achei que o seguinte funcionou bem para mim:

run python script.py
    
por 10.08.2017 / 08:00