Inicie o aplicativo Sinatra em segundo plano com stdout e stderr redirecionados (anexados) para um arquivo

6

Eu tenho um aplicativo Sinatra que eu executo na minha máquina local usando ruby app.rb . Ao implantá-lo em uma máquina remota via ssh, como posso executá-lo em segundo plano e redirecionar stdout e stderr para um arquivo de log?

Em uma reinicialização, desejo preservar os logs anteriores para que as mensagens mais recentes sejam anexadas ao arquivo de log existente, em vez de truncá-lo.

Qual é a maneira recomendada de executar meu aplicativo da web como um daemon?

Eu tentei nohup ruby app.rb & , mas parece que está faltando stderr e as instruções de log parecem estar fora de ordem em alguns casos.

    
por letronje 19.12.2010 / 15:47

2 respostas

8

No bash, tente:

nohup ruby app.rb >> /log/file 2>&1 &
    
por 19.12.2010 / 16:12
3

screen -L -dmS somename ruby app.rb

Isso iniciará um processo de tela com o nome 'somename', com todas as saídas do programa sendo registradas no screenlog.0 no diretório de trabalho atual.

Se você quiser recuperar o console do aplicativo por algum motivo, poderá fazer screen -r somename .

    
por 19.12.2010 / 17:28