Usualmente uso el subsistema Linux cuando estoy programando cualquier cosa en Windows 10, por lo que todas mis rutas son relativas ~
. Tengo un script de Python que se ejecuta para siempre en segundo plano hasta que elimine el proceso. ¿Cómo haría eso en Windows 10 bash sin un terminal abierto?
Cosas que he probado:
bash -c "python3 script.py
de Run.nohup python3 -u script.py
luego cerrando la terminal.setsid python3 script.py
luego cerrando la terminal.
Ninguno de estos funcionó. ¿Hay alguna forma de hacer esto? Alternativamente, ¿hay alguna manera de alterar las rutas para que funcionen si ejecuto el script desde W10 AND bash sin tener que cambiarlas cada vez?
jobs
) como un proceso (ps aux
). Puedo usarfg
para traerlo al primer plano. Pero, después de cerrar la última ventana de bash y abrir una nueva ventana de bash, el trabajo se ha ido, el proceso aún se está ejecutando y no puedo mover el proceso al primer plano. Lo siento si mi terminología está apagada.tmux
oscreen
para apoyar volver a conectar a un terminal diferente. Las máquinas Linux (y otras * nix) que se ejecutan de forma nativa tienen la misma limitación.Sí, es "imposible" en este momento.
Pero es posible que "aparezca" como un proceso en segundo plano con algunos trucos. Quería esta funcionalidad bastante mal, así que después de un par de horas se me ocurrió una solución de mierda pero funcional.
El punto principal es crear un shell invisible al que inicie WSL Bash con VBScript. Luego puede hacer que ese script se ejecute al inicio. La programación adecuada de tareas no funcionó por alguna extraña razón.
Del lado de Linux para habilitar demonios, puede tener su propio sistema de inicio rudimentario que abusa de .bashrc, por ejemplo.
El proceso se detalla aquí en este documento que escribí https://emil.fi/bashwin . No implementé el monitoreo de tareas, pero debería ser bastante fácil de extender.
fuente
¿Has probado esta solución?
Utiliza un ayudante de WSH para iniciar cualquier aplicación oculta.
Luego, puede crear una nueva tarea en Tak Scheduler para iniciar el comando cuando inicie sesión. Algo como
wscript <path to runHidden.vbs> bash.exe -c "python script.py"
fuente
Me llevó una eternidad, pero encontré una forma estúpidamente complicada de hacerlo (a partir de un archivo por lotes):
start bash -c "DISPLAY=:0 [command] & (sleep 0.5 && kill -n 9 $$)"
Aquí hay un desglose de lo que hace y por qué:
fuente
No sé qué tan bien Windows Service Manager (SrvMan) de http://tools.sysprogs.org/srvman/ funcionaría para usted, pero me ha funcionado para otros programas. De hecho, intenté ejecutar el "bash.exe" como un servicio para ver si funcionaba, y supongo que tengo que pensar un poco más para que LAMP funcione realmente en segundo plano.
fuente