CNode

关于forever、nohup、pm2在服务器后台运行的问题

问答
IIGeekU发布于10 年前最后回复10 年前7 回复7791 浏览0 收藏

各位,最近做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)

W
wssgcg1213#1·10 年前

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

A
artisan#2·10 年前

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

J
JacksonTian#3·10 年前

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

I
IGeekU#4·10 年前
引用 JacksonTianxshell 的问题。 nohup xx & 后 主动exit。

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

Z
zstxt1989#5·10 年前

pm2都会掉?用screen试试

F
functionxu#6·10 年前

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

K
klausgao#7·10 年前

为什么不设置自启动?

参与回复
登录后即可参与回复。登录