Existe alguma maneira de executar processos em segundo plano no Windows? equivalente nohup para Windows

Existe alguma maneira de executar processos em segundo plano no Windows? equivalente nohup para Windows

nohup executa um processo em segundo plano. Existe algum equivalente para Windows?

Responder1

Você pode usar o comando start para executar um processo em segundo plano da janela de comando.

command1
command2
start command3
command4

comando2 espera até que o comando1 termine, mas o comando4 não espere que o comando3 termine.

e se precisar rodar independentemente do usuário logado, você precisa iniciar o processo como um serviço e pode usaranysrv.exe

Responder2

Você pode querer dar uma olhada nos serviços do Windows. Existem algumas ferramentas que você pode baixar para hospedar qualquer processo como um serviço do Windows. Isso faz com que o processo seja carregado em segundo plano na inicialização do Windows, portanto, desde que não exija interação do usuário, você poderá hospedá-lo dessa forma.

Kit de recursos do Windows Server 2003

A ferramenta que você procura se chama srvany.exe.

Responder3

A única maneira, no Windows, de fazer com que um processo iniciado por um usuário continue em execução após o logoff (ou seja, o que o "nohup" faz) é iniciá-lo por meio de uma "tarefa agendada" ou como um serviço do Windows. Quando o usuário efetua logoff, todos os processos em sua sessão de logon serão eliminados.

Se você deseja experimentar o método "Tarefas agendadas", você vai querer saber como criá-las programaticamente. OWin32_ScheduledJobA classe WMI pode fazer isso. A documentação é fornecida em detalhes aqui:http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true Basicamente, você está tentando fazer (roubado descaradamente da 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 conceder ao "usuário joe" a capacidade de criar tarefas agendadas, você terá que modificar a permissão na pasta %SystemRoot%\Tasks. Veja aqui algumas informações sobre esse assunto:http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx

Responder4

Tudo isso depende de qual é o seu propósito final. Você pode executar uma tarefa agendada com a opção de execução somente se o usuário estiver conectado definido como DESATIVADO. Você poderia usar o psexec de uma máquina remota. Melhor ainda seria executar o processo como um serviço. Confiraesta pesquisa no Google,esta outra pesquisa do Google,este tópico, eesse outro tópicopara algumas pistas possíveis em sua busca por uma solução. Em última análise, parece que não háexatoequivalente a nohup em uma máquina Windows.

informação relacionada