为什么永远不能在注销之后保持我的nodejs进程运行?

我在家中设置了一个Ubuntu服务器,用于托pipe由nodejs服务的Web应用程序。 我的服务器上有一个连接应用程序。 当我ssh进入,只是做一些像

node app.js &> server.log & logout 

然后,我注销后,服务器就像是搁置,它不会提供任何请求,但当我ssh回到它开始再次服务请求。

所以看起来永远的包装就是为了解决这个问题而devise的。 所以永远安装,我这样做:

 forever start -al forever.log -ao serverout.log -ae servererror.log app.js 

我从这个命令得到相同的结果。 我的服务器将服务请求,而我ssh'ed,但一旦我注销我的服务器停止服务请求。 我还能做些什么来解决这个问题?

考虑使用cron 。 您可以在bash中运行crontab ,而无需select获取您帐户的cronconfiguration。 您可能需要root访问权限,然后必须使用-u选项指定用户帐户。 有关您的发行版的实现的更多信息,请参阅man crontab

我确信有更好的,但这是一个体面的cron语法教程。

我不会使用Forever for this,但可以使用Supervisord 和Monit等生产工具,请参阅在单个服务器上运行和pipe理nodejs应用程序 。

对于每个应用程序,只需创build一个Supervisorconfiguration文件,如下所示:

 [program:myapp] command=node myapp.js ; the program (relative uses PATH, can take args) directory=/www/app/ ; directory to cwd to before exec (def no cwd) process_name=myapp ; process_name expr (default %(program_name)s) autorestart=true ; whether/when to restart (default: unexpected) startsecs=1 ; number of secs prog must stay running (def. 1) stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) stdout_logfile=/var/log/myapp.log ; stdout log path, NONE for none default AUTO stderr_logfile=/var/log/myapp.err.log ; stderr log path, NONE for none default AUTO 

更多信息: Brin.gr的NodeJSstream程pipe理