关于forever、nohup、pm2在服务器后台运行的问题
发布于 9 年前 作者 IGeekU 6995 次浏览 最后一次编辑是 8 年前 来自 问答

各位,最近做Node.js,出现了很郁闷的问题,我在ubuntu系统服务器上已经运行node程序,程序运行正常,但是当我想后台运行时,却出现问题。 1,sudo node app.js 正常运行 2, 全局安装forever后,当forever app.js 运行正常,但是ctrl+c或者退出xshell客户端无法使用,再次打开xshell后,我用forever list查询,竟然没有运行的进程。 3,我使用默认的nohup, nohup node app.js &,运行正常,但是一旦关闭xshell程序就无法提供服务。 4,后来用了PM2,也是这个问题,关闭xshell,程序就无法提供服务。 尝试了很多,都无法解决,求大神赐教,拯救小白!

7 回复

xshell 的问题。 nohup xx & 后 主动exit。

@JacksonTian 这种情况下,如何解决呢

pm2都会掉?用screen试试

当时我的node是0.xx.xx的版本时,用nohup可以起,即便直接X掉xshell也没问题,后来升级到4.XX,不能直接X掉xshell,只能exit退出

Linux系统是这样设计的。 1.用户准备退出 session 2.系统向该 session 发出SIGHUP信号 3.session 将SIGHUP信号发给所有子进程 4.子进程收到SIGHUP信号后,自动退出 上面的流程解释了,为什么"前台任务"会随着 session 的退出而退出:因为它收到了SIGHUP信号。 那么,"后台任务"是否也会收到SIGHUP信号? 这由 Shell 的huponexit参数决定的。

$ shopt | grep huponexit 执行上面的命令,就会看到huponexit参数的值。 大多数Linux系统,这个参数默认关闭(off)。因此,session 退出的时候,不会把SIGHUP信号发给"后台任务"。所以,一般来说,"后台任务"不会随着 session 一起退出。 reference 阮老师博客 From Noder

可以试试tmux开个,然后node,然后退出

为什么不设置自启动?

回到顶部