Node.js 为什么在我注销后,我的nodejs进程永远无法运行?

Node.js 为什么在我注销后,我的nodejs进程永远无法运行?,node.js,ssh,forever,Node.js,Ssh,Forever,我在家里设置了一个Ubuntu服务器,用于托管由nodejs提供服务的web应用程序。我的服务器上有一个connect应用程序。当我在ssh中做一些类似的事情时 node app.js &> server.log & logout 然后,在我注销之后,服务器就像挂起一样,它不会提供任何请求,但当我重新使用ssh时,它会再次开始提供请求 所以看起来永久包就是为了解决这个问题而设计的。所以永远安装,我这样做: forever start -al forever.log -ao

我在家里设置了一个Ubuntu服务器,用于托管由nodejs提供服务的web应用程序。我的服务器上有一个connect应用程序。当我在ssh中做一些类似的事情时

node app.js &> server.log &
logout
然后,在我注销之后,服务器就像挂起一样,它不会提供任何请求,但当我重新使用ssh时,它会再次开始提供请求

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

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

我从这个命令中得到相同的结果。我的服务器将在我登录ssh时提供请求,但一旦我注销,服务器将停止提供请求。我还可以做些什么来排除故障?

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


我相信还有更好的,但是有一个关于cron语法的不错的教程。

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


我相信还有更好的工具,但是有一个关于cron语法的不错的教程。

我不会永远使用它,但是像Monit这样的生产型工具,请参阅

对于每个应用程序,只需创建一个管理器配置文件,如下所示:

[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

更多信息:。

我不会永远使用这些工具,但生产准备好的工具,如Monit,请参阅

对于每个应用程序,只需创建一个管理器配置文件,如下所示:

[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

更多信息:。

您可以尝试在
屏幕
会话中运行服务器吗,或者在
byobu
中运行服务器吗?我已经尝试了屏幕,但我的屏幕会话在注销时结束。不过我还没有试过byobu。我也试过nohup,但没能成功使用。你找到答案了吗?我也面临同样的问题。您可以尝试在
屏幕
会话中运行服务器吗,或者在
byobu
中运行服务器吗?我已经尝试了屏幕,但我的屏幕会话在注销时结束。不过我还没有试过byobu。我也试过nohup,但没能成功使用。你找到答案了吗?我也面临同样的问题。