You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js服务器在SSH终端disown并关闭会话后崩溃且CPU满载

Node进程disown后关闭SSH导致CPU100%的解决方案

问题核心原因

你遇到的问题本质是Node进程的标准输入/输出(stdin/stdout)未正确脱离终端。当你用disown -h仅移除HUP信号关联但未处理IO流时,终端关闭后,Node进程尝试读写已经失效的终端设备,触发无意义的忙等待(busy loop),直接占满CPU导致服务器锁死。

快速修复方法

方法1:启动时重定向IO到/dev/null

启动Node进程时,把标准输出和错误输出都定向到空设备,避免终端关闭后的IO异常:

node server.js > /dev/null 2>&1 &
disown -h
  • > /dev/null:将标准输出(stdout)丢弃
  • 2>&1:将标准错误(stderr)重定向到标准输出,一起丢弃

方法2:用nohup替代disown

nohup会自动处理终端脱离和IO重定向,比手动disown更可靠:

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

执行后直接关闭SSH即可,无需额外disown命令。默认输出会写入nohup.out,这里指定到/dev/null避免生成冗余日志文件。

方法3:使用专业进程管理工具(推荐长期服务)

对于生产环境的Node服务,强烈使用pm2这类进程管理器,彻底解决终端依赖问题,还能提供监控、自动重启、日志管理等实用功能:

  1. 安装pm2:
npm install -g pm2
  1. 启动服务:
pm2 start server.js
  1. 查看进程状态:
pm2 status
  1. 设置开机自启(可选):
pm2 startup

验证步骤

按照上述任一方法启动服务后,关闭SSH会话,访问站点并通过ps aux查看CPU占用,确认问题是否解决。

内容的提问来源于stack exchange,提问作者Joshua Brewster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:52:04