如何让AWS EC2上的NodeJS服务器脱离SSH连接持续运行?
让AWS EC2上的Node.js服务器持续运行的方法
方法1:使用PM2(推荐,适合生产环境)
PM2是Node.js专用的进程管理器,能自动重启服务、管理进程状态,还支持开机自启,非常适合长期运行的服务。
- 全局安装PM2:
npm install pm2 -g - 进入你的项目目录,启动服务:
这里pm2 start npm --name "me-server" -- start--name "me-server"是给进程设置别名,方便后续管理;-- start对应你package.json里的npm start命令。 - 查看进程状态:
pm2 status - 设置开机自启:
执行后会输出一条系统命令,复制并执行这条命令,就能让PM2在EC2重启后自动启动你的服务。pm2 startup - 查看服务日志:
实时查看日志可以加pm2 logs me-server--tail参数:pm2 logs me-server --tail
方法2:使用nohup(简单快速,适合临时测试)
nohup是Linux自带的工具,能让命令脱离终端后台运行,断开SSH后进程不会终止。
- 进入项目目录,执行:
nohup npm start &&符号是让命令在后台运行,nohup会把输出默认写入当前目录的nohup.out文件。 - 查看日志:
用tail -f nohup.outtail -f可以实时跟踪日志输出。 - 停止服务:
先找到Node.js进程的ID:
然后用kill命令终止进程:ps aux | grep nodekill <进程ID>
方法3:使用screen/tmux(适合需要随时重新连接查看会话的场景)
screen/tmux是终端多路复用工具,能创建持久化的会话,断开SSH后会话里的进程继续运行,后续可以重新连接回去操作。
- 安装screen(以Amazon Linux为例,Ubuntu用
sudo apt install screen):sudo yum install screen -y - 创建新会话:
screen -S me-server-session - 在会话里进入项目目录,执行
npm start启动服务。 - 脱离会话(保持进程运行):按下
Ctrl+A,然后按D键,此时会回到原来的终端,会话在后台运行。 - 重新连接会话:
screen -r me-server-session - 停止服务:重新连接会话后,按
Ctrl+C终止服务,然后输入exit关闭会话。
内容的提问来源于stack exchange,提问作者Bitwise
相关产品推荐
相关产品推荐

