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

11

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

    
por Jader Dias 12.07.2009 / 03:15

4 respostas

8

Você pode usar o comando start para executar um processo no fundo da janela de comando.

command1
command2
start command3
command4

o comando2 aguarda até que o comando1 termine, mas o comando4 não aguarde que o comando3 termine.

e se você precisar executar independentemente do usuário conectado, será necessário iniciar o processo como um serviço e usar anysrv .exe

    
por 12.07.2009 / 03:27
6

Você pode querer consultar os 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ê deve ser capaz de hospedá-lo dessa maneira.

Windows Server 2003 Resource Kit

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

    
por 12.07.2009 / 03:49
5

A única maneira, no Windows, que você pode ter um processo iniciado por um usuário continuar executando após o logoff (ou seja, o que "nohup" faz) é iniciá-lo através de uma "tarefa agendada" ou como um serviço do Windows. Quando o usuário fizer logoff de todos os processos em sua sessão de logon, será eliminado.

Se você gosta de experimentar o método "Tarefas agendadas", convém saber como criá-las programaticamente. A classe WMI Win32_ScheduledJob pode fazê-lo. A documentação é fornecida em detalhes aqui: link Basicamente, você está procurando fazer (descaradamente roubado 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 "joe user" a capacidade de criar tarefas agendadas, você terá que modificar a permissão na pasta% SystemRoot% \ Tasks. Veja aqui algumas informações sobre isso: link

    
por 12.07.2009 / 06:42
0

Tudo depende do seu objetivo final. Você pode executar uma tarefa agendada com a opção de executar somente se o usuário estiver conectado definido como DISABLED. Você poderia usar o psexec de uma máquina remota. Melhor ainda pode ser executar o processo como um serviço. Confira esta pesquisa do Google , essa outra pesquisa do Google , este tópico e este outro tópico para alguns possíveis leads em sua busca por uma solução. Em última análise, parece que não há exato equivalente a nohup em uma máquina Windows.

    
por 12.07.2009 / 03:27