如何将Node.js作为后台进程运行并永远不会死亡?

37 浏览
0 Comments

如何将Node.js作为后台进程运行并永远不会死亡?

我通过putty SSH连接到linux服务器。我尝试这样把它作为后台进程运行:

$ node server.js &

然而,2.5小时后,终端变得不活动,并且进程死亡。有没有办法即使终端断开连接也能保持进程的运行?


编辑1

实际上,我尝试过使用nohup,但是一旦关闭了Putty SSH终端或拔掉了我的互联网,服务器进程立即停止。

我需要在Putty中做些什么吗?


编辑2(2012年2月)

有一个node.js模块,forever。它将运行node.js服务器作为守护进程服务。

admin 更改状态以发布 2023年5月23日
0
0 Comments

简单解决方案(如果您不想回到进程,只想让它继续运行):

nohup node server.js &

还有一个jobs命令,可以看到这些后台进程的索引列表。您可以通过运行kill %1kill %2来杀死后台进程,数字是进程的索引。

强大的解决方案(允许您重新连接到交互式进程):

screen

然后,您可以通过按Ctrl+a+d来解除连接,然后通过运行screen -r重新连接。

还可以考虑新型的替代屏幕的工具tmux。

0
0 Comments

nohup node server.js > /dev/null 2>&1 &

  1. nohup 表示:即使 stty 被中断也不要终止此进程。
  2. > /dev/null 表示:stdout 去 /dev/null(它是一个不记录任何输出的虚设设备)。
  3. 2>&1 表示:stderr 也进到 stdout(它已被重定向到 /dev/null)。您可以将 &1 替换为文件路径以记录错误日志,例如:2>/tmp/myLog
  4. 最后的 & 表示:将此命令作为后台任务运行。
0