Como desalojo / desanexar um processo do terminal do Git Bash que vem com o instalador do Windows do Git?

5

Eu gostaria de executar comandos do terminal (principalmente servidores Python) e essencialmente daemonizá-los. Estou executando o terminal do MinGW "Git Bash" que vem com o instalador do Windows para o Git.

Coisas que não funcionam funcionam:

  • nohup - > comando não encontrado
  • setsid - > comando não encontrado
  • $ script.py & - > não se comporta como esperado
  • $ script.py & disown - > não se comporta como esperado

Eu usaria bg , mas meu objetivo final é fechar o terminal depois que meus servidores estiverem em execução e não matar os processos.

    
por burfl 03.04.2013 / 18:55

2 respostas

3

Esta é uma síntese da minha resposta mais longa a uma pergunta semelhante em SO .

Se o seu aplicativo fizer login no stdout / stderr, use:

cmd //c start cmd //k  "path\to\script-dir\script.py"

Se ele registra em arquivos, através de sockets, etc. e você não precisa de stdout / stderr, use:

cmd //c start //D "path\to\script-dir" script.py

Em ambos os casos, você obtém um daemon como o processo que irá sobreviver quando você fechar o bash. Na primeira instância, seu script é hospedado em uma janela cmd.exe visível.

Muito mais aqui .

    
por 30.12.2013 / 17:47
1

Não tenho idéia se isso funcionará no bash no Windows, mas o bash fornece um comando interno para "rejeitar" um processo em segundo plano. Depois de fazer o trabalho em segundo plano com bg , basta executar disown . Por padrão, ele rejeitará o último trabalho com bg , mas você também poderá atribuir um número de trabalho se tiver vários trabalhos em segundo plano.

Mais informações aqui em Controles internos do job .

    
por 25.05.2013 / 21:47