Windows: ejecuta el proceso en segundo plano después de cerrar cmd

15

Tengo un script de Python que quiero ejecutar como proceso en segundo plano en Windows.

Puedo hacer eso en Linux con:

python script.py &

y luego desconecte el proceso de la terminal con:

disown

En Windows, todo lo que tengo hasta ahora es esto:

start /b python script.py

Sin embargo, si cierro la ventana de CMD, el script deja de ejecutarse. ¿Hay algún comando adicional que me falte aquí para mantener el script ejecutándose en segundo plano?

multigoodverse
fuente

Respuestas:

6

startya debería ser la dirección correcta. Sin embargo, lo /badjunta a la misma consola. Ahora el problema es que cuando se cierra una ventana de consola, también se cerrará cualquier proceso asociado con esta consola.

Puede usar startsin /b, luego se ejecutará en una nueva consola. Sin embargo, si desea ejecutarlo en segundo plano sin una ventana de consola, necesitará usar un VBScript o una herramienta de terceros: ejecute un archivo por lotes de una manera completamente oculta

Sin embargo, en ese caso ya no vería la salida stdout / stderr. Sin embargo, puede redirigirlo a un archivo envolviéndolo en una cmd /c your_command > stdout.txt 2> stderr.txtllamada y comenzando este a través de uno de los métodos antes mencionados (VBScript, herramienta de terceros, ...).

Alternativamente, también puede ocultar su propia ventana de consola antes de salir. Acabo de escribir un pequeño programa de una línea que hace exactamente eso (el código fuente es básicamente ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/hide_current_console.exe

De esta manera, puede usar start /b, y cuando quiera "cerrar" su consola (técnicamente ocultarla), ejecutará hide_current_console & exitlo que ocultará la consola y luego cerrará el proceso cmd.exe (no el proceso de Python), en una línea, ya que no puedes escribir exitdespués de que la consola ya estaba oculta.

CherryDT
fuente
¿De dónde hide_current_consoleviene? No funciona en una PC W10.
Btc Sources
1
Lo probé nuevamente, todavía funciona. De dónde viene: lea la publicación nuevamente, mostré la línea de código fuente que tiene este archivo y vinculé un archivo compilado hide_current_console.exe para descargar ...
CherryDT
-2

Encontré que lo siguiente funcionó bien para mí:

run python script.py
nikc
fuente
1
Ah, y en Linux en lugar de background ( &) y disownsugeriría usar nohup.
nikc
55
Esa orden introducida en una cáscara de Windows cmd da el siguiente error: 'run' is not recognized as an internal or external command, operable path or batch file..
markshep