O sugerido (setsid, et al) é ótimo se você está apenas disparando algo e não se preocupa com sua longevidade, mas na produção você usaria um sistema daemon apropriado para monitorar e reaparecer um processo do servidor. O Ubuntu vem com o Upstart, então eu gostaria de escrever um script Upstart.
Salve algo assim em algum lugar como /etc/init/mynodeapp.conf
:
description "My node.js app"
start on startup
stop on shutdown
respawn
exec sudo -u USER /usr/bin/node /var/www/my_app.js
Substitua USER
na linha exec
pelo usuário que você deseja executar e verifique se o caminho para o binário node
está cheio e correto ( which node
ajudará a confirmar). Se você estiver usando uma versão instalada localmente, verifique se ela aponta para lá.
Assim que estiver em ordem, sudo start mynodeapp
irá iniciá-lo, sudo stop mynodeapp
irá pará-lo e vários outros comandos iniciais ( restart
, status
, etc) farão o que forem projetados para fazer. Se você não quiser que ele inicie na inicialização, apenas comente a linha de início com um #
.
É assim que eu faria na produção ... Você menciona querer "retornar ao contexto do Node" ... Isso é um pouco mais difícil. Upstart e até mesmo o outro processo de técnicas de reparação todos os separar do processo. Geralmente não há como voltar ao fogo de artifício aceso.
Se você tem um processo contínuo que você precisa seguir, provavelmente é a sua sessão de terminal que você quer ver mudando. Se eu realmente precisasse do que você está sugerindo, eu começaria a olhar para screen
. Isso permite que você tenha vários terminais suspensos que você pode remover e reconectar de e para, respectivamente.
Não é um aplicativo simples para dominar, mas um que pode valer a pena ser explorado: