web-dev-qa-db-ja.com

stdoutとstderrをファイルにリダイレクト(追加)して、Sinatraアプリをバックグラウンドで起動します

Ruby app.rbを使用してローカルマシンで実行するSinatraアプリがあります。 sshを介してリモートマシンにデプロイしているときに、バックグラウンドで実行し、stdoutとstderrをログファイルにリダイレクトするにはどうすればよいですか?

再起動時に、以前のログを保持して、新しいメッセージを切り捨てるのではなく、既存のログファイルに追加したいと思います。

Webアプリケーションをデーモンとして実行するための推奨される方法は何ですか?

Nohup Ruby app.rb &を試しましたが、stderrが欠落しているようで、ログステートメントが正しくない場合があります。

7
letronje

Bashの下で、次のことを試してください。

Nohup Ruby app.rb >> /log/file 2>&1 &
9
MadHatter

screen -L -dmS somename Ruby app.rb

これにより、「somename」という名前の画面プロセスが開始され、プログラムからのすべての出力が現在の作業ディレクトリのscreenlog.0に記録されます。

なんらかの理由でアプリケーションのコンソールを取り戻したい場合は、screen -r somenameを実行できます。

3
devicenull