我有一个 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
。