Tente isto:
nohup supervisor -w "myapp/src/main/node,myapp2/src/main/node,./" run-apps.js &
Algumas outras maneiras:
Estou tentando manter um aplicativo em meu servidor Ubuntu funcionando para que o Google tenha tempo de fazer o ping, mas o aplicativo continua sendo desligado quando eu faço logout.
Eu inicio o aplicativo Nodejs com supervisor
para monitorar as alterações (por meio de um script de shell)
Eu encontrei comandos como nohup
, mas eu realmente não tenho noção quando se trata de rodar serviços de segundo plano além de digitar comandos simples como service httpd start
, o que parece funcionar muito bem para o Apache no CentOS!
Preciso criar outro usuário para executar serviços? Eu tenho uma instância do Linode com o Ubuntu 10.04
run.sh
cd myapp/src/main/node
supervisor -w "myapp/src/main/node,myapp2/src/main/node,./" run-apps.js
Tente isto:
nohup supervisor -w "myapp/src/main/node,myapp2/src/main/node,./" run-apps.js &
Algumas outras maneiras:
A razão pela qual ele sai é porque quando você efetua logout e termina o shell pai, o script recebe um sinal HUP e perde sua capacidade de gravar em STDOUT e STDERR.
Você tem 4 opções, (em ordem de "correção" e "limpeza"):
screen
session nohup
disown
s e feche os canais STDOUT e STDERR associados. Aqui está outra maneira de fazer isso sem nohup
: deserdar.
Por exemplo:
$ jobs
$ sleep 300 &
[1] 79844
$ jobs
[1] + running sleep 300
$ disown %1
$ jobs
$ pgrep sleep
79844
Explicação:
jobs
para mostrar trabalhos em segundo plano, não há nenhum sleep 300
jobs
novamente. PID para sleep
é 79844 e é o job # 1 jobs
novamente. Não há trabalhos em segundo plano. pgrep
para encontrar qualquer processo denominado sleep
. Existe um, com PID 79844 (mesmo PID) Você pode fechar o terminal e / ou efetuar logout sem afetar o trabalho rejeitado.
Isso tem a vantagem de não deixar em torno de um arquivo nohup.out
, mas você também perde tudo escrito em STDOUT
.