¿Hay alguna forma de ejecutar procesos en segundo plano en Windows? equivalente de nohup para windows

¿Hay alguna forma de ejecutar procesos en segundo plano en Windows? equivalente de nohup para windows

nohup ejecuta un proceso en segundo plano. ¿Existe algún equivalente para Windows?

Respuesta1

Puede utilizar el comando de inicio para ejecutar un proceso en el fondo de la ventana de comandos.

command1
command2
start command3
command4

comando2 espera hasta que finalice el comando1, pero el comando4 no espera a que finalice el comando3.

y si necesita ejecutar independientemente del usuario que inició sesión, debe iniciar el proceso como un servicio y puede usaranysrv.exe

Respuesta2

Es posible que desee consultar los servicios de Windows. Existen algunas herramientas que puede descargar para alojar cualquier proceso como un servicio de Windows. Esto hace que el proceso se cargue en segundo plano al iniciar Windows, por lo que, siempre que no requiera la interacción del usuario, debería poder alojarlo de esta manera.

Kit de recursos de Windows Server 2003

La herramienta que busca se llama srvany.exe.

Respuesta3

La única forma, en Windows, de que un proceso iniciado por un usuario continúe ejecutándose después del cierre de sesión (es decir, lo que hace "nohup") es iniciarlo a través de una "tarea programada" o como un servicio de Windows. Cuando el usuario cierra sesión, se eliminarán todos los procesos en su sesión de inicio de sesión.

Si estás dispuesto a probar el método de "Tareas programadas", querrás saber cómo crearlas mediante programación. ElWin32_Trabajo programadoLa clase WMI puede hacerlo. La documentación se proporciona detalladamente aquí:http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true Básicamente, lo que estás buscando es hacer (robado descaradamente de Microsoft):

Set objService = GetObject("winmgmts:\\.")
Set objNewJob = objService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create("Program-to-execute.exe", "ugly-formatted-time-string-per-Microsoft-docs",True ,1 OR 4 OR 16, , ,JobID)
If Err.Number = 0 Then
 Wscript.Echo "New Job ID: " & JobID
Else
 Wscript.Echo "An error occurred: " & errJobCreated
End If

Para otorgarle al "usuario joe" la capacidad de crear tareas programadas, deberá modificar el permiso en la carpeta %SystemRoot%\Tasks. Consulte aquí para obtener información al respecto:http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx

Respuesta4

Todo esto depende de cuál sea tu propósito final. Puede ejecutar una tarea programada con la opción de ejecutarse solo si el usuario ha iniciado sesión y está configurado en DISABLED. Posiblemente puedas usar psexec desde una máquina remota. Mejor aún podría ser ejecutar el proceso como un servicio. Verificaresta búsqueda de Google,esta otra busqueda de google,este hilo, yeste otro hilopara algunas posibles pistas en su búsqueda de una solución. Al final parece que no hayexactoequivalente a nohup en una máquina con Windows.

información relacionada