运行grails run app时无法将其输出重定向到文件nohup

运行grails run app时无法将其输出重定向到文件nohup,grails,Grails,作为某些自动化脚本的一部分,我要求grails run app在后台运行,并将其输出记录/重定向到日志文件 nohup /opt/grails-2.0.3/bin/grails -Ddisable.auto.recompile=true -Dserver.port=8080 run-app --non-interactive > consoleout.log 2>&1 > /dev/null & 任何指针都会有很大的帮助。您引用的命令可以将输出传输到conso

作为某些自动化脚本的一部分,我要求grails run app在后台运行,并将其输出记录/重定向到日志文件

nohup /opt/grails-2.0.3/bin/grails -Ddisable.auto.recompile=true -Dserver.port=8080 run-app --non-interactive > consoleout.log 2>&1 > /dev/null &

任何指针都会有很大的帮助。

您引用的命令可以将输出传输到
consoleout.log
,但我认为您的问题是输出重复且混乱,例如:

| Environment set to development..
| Environment set to development...
| Environment set to development....
| Environment set to development.....
| Packaging Grails application
| Packaging Grails application.
您可以通过在
--非交互式
之后添加
--普通输出
参数来解决此问题。这将导致Grails在每条消息中输出一行,而不使用颜色编码,这对日志非常有效

如果您的问题是使用
nohup
&
运行Grails,那么我们需要更多关于您试图实现的目标的信息。如果它只是在服务器上运行Grails应用程序的一个实例,那么您可能希望生成一个WAR文件,并在诸如Tomcat或Jetty之类的容器中运行该文件,而不是使用
runapp
。您还需要设置环境,使其不是
开发


声明“不应使用grailsrunapp命令部署Grails”,但提供了部署指南

可能我在consoleout.log中没有得到任何东西,因为我正在通过chef recipe运行此命令。chef recipe代码段看起来像这样的脚本“running grails”do解释器“bash”user“myuser”code&1>/dev/null&EOH end。任何关于如何通过chefIt运行此功能的想法听起来都像是在采用一种非常折衷的方法来部署应用程序。您应该使用chef来检查应用程序是否已安装,但是使用RPM/DEB来安装和管理依赖项,使用标准UNIX init脚本来启动/停止应用程序要简单得多。