nohup executa um processo em segundo plano. Existe algum equivalente para o Windows?
windows
background-process
nohup
Jader Dias
fonte
fonte
START
comando não desanexa, ou seja, ainda é filho do processo que o criou. No seu exemplo, isso significa que 'command3' morrerá sempre que o processo mãe terminar. O Unix contorna isso ao fazer isso era conhecido como 'fork duas vezes', mas eu não conheço um equivalente no Windows.exec(<some windows executable>)
. Eu posso ver claramente no Process Explorer o relacionamento pai-filho e tudo o que começo de dentroexec()
não sobrevive. Corrija que parece funcionar se eu iniciar umcmd.exe
menu Iniciar, onde o processo iniciado parece ficar órfão 'corretamente' quandocmd.exe
sair. Claramente eu preciso entender isso melhor. :-(Você pode querer olhar para 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ê poderá hospedá-lo dessa maneira.
Kit de Recursos do Windows Server 2003
A ferramenta que você procura é chamada srvany.exe.
fonte
A única maneira, no Windows, de 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 fizer logoff, todos os processos em sua sessão de logon serão eliminados.
Se você deseja experimentar o método "Tarefas agendadas", convém saber como criá-las programaticamente. A classe W32 Win32_ScheduledJob 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á pensando em fazer (roubado descaradamente da Microsoft):
Para conceder ao "joe user" a capacidade de criar tarefas agendadas, você precisará modificar a permissão na pasta% SystemRoot% \ Tasks. Veja aqui algumas informações nessa frente: http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx
fonte
Tudo isso depende do seu objetivo final. Você pode executar uma tarefa agendada com a opção de executar apenas se o usuário estiver conectado e definido como DESATIVADO. Você poderia usar o psexec de uma máquina remota. Melhor ainda: executar o processo como um serviço. Confira esta pesquisa no Google , esta outra pesquisa no Google , este tópico e este outro tópico para obter possíveis pistas na sua busca por uma solução. Por fim, parece que não há equivalente exato ao nohup em uma máquina Windows.
fonte