在后台启动 Sinatra 应用,并将 stdout 和 stderr 重定向(附加)到文件

在后台启动 Sinatra 应用,并将 stdout 和 stderr 重定向(附加)到文件

我有一个 Sinatra 应用程序,我使用它在本地机器上运行ruby app.rb。当通过 ssh 将其部署到远程机器上时,如何在后台运行它并将 stdout 和 stderr 重定向到日志文件?

在重新启动时,我想保留以前的日志,以便将较新的消息附加到现有日志文件,而不是截断它。

将我的 Web 应用程序作为守护进程运行的推荐方法是什么?

我已经尝试过nohup ruby app.rb &,但似乎缺少 stderr,并且在某些情况下日志语句似乎无序。

答案1

在 bash 下尝试:

nohup ruby app.rb >> /log/file 2>&1 &

答案2

screen -L -dmS somename ruby app.rb

这将启动一个名为“somename”的屏幕进程,程序的所有输出都将记录到当前工作目录中的 screenlog.0 中。

如果您因为某种原因想要恢复应用程序的控制台,您可以执行此操作screen -r somename

相关内容