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

AWS EC2重启后rc.local调用PM2启动脚本失败求助

解决AWS EC2重启自动启动Nginx和Node.js应用的问题

错误原因分析

status=203/EXEC错误通常由以下问题导致:

  • /etc/rc.local 缺少正确的脚本解释器声明(shebang)
  • 脚本文件权限不足,无法执行
  • 启动脚本中存在环境变量缺失(比如系统启动时找不到pm2)

修复步骤

1. 修正/etc/rc.local文件

原文件第一行是无效注释,需添加正确的shebang,同时确保脚本可执行:

#!/bin/bash
# 调用启动脚本
/etc/startup_script.sh &
exit 0

给rc.local添加执行权限:

sudo chmod +x /etc/rc.local

2. 修正/etc/startup_script.sh脚本

  • 移除不必要的sudo:rc.local以root用户执行,无需重复提权
  • 明确pm2的绝对路径(避免系统启动时PATH环境不完整导致找不到命令),可先用which pm2查看路径(示例路径为/usr/local/bin/pm2)

修改后的脚本内容:

#!/bin/bash
# 启动Nginx
systemctl start nginx.service

# 启动PM2服务,替换为你的pm2实际路径
PM2_PATH=$(which pm2)
$PM2_PATH start npm --name node_server1
$PM2_PATH start npm --name node_server2
$PM2_PATH start npm --name node_server3
$PM2_PATH start npm --name node_server4

$PM2_PATH save

给该脚本添加执行权限:

sudo chmod +x /etc/startup_script.sh

3. 更可靠的替代方案:使用systemd服务(推荐)

rc.local在部分现代Linux发行版兼容性较差,推荐用systemd服务管理自启:

设置Nginx开机自启

sudo systemctl enable nginx.service

设置PM2开机自启

  1. 保存当前PM2进程列表:
pm2 save
  1. 生成systemd配置文件(替换ec2-user为你的实际用户名,/home/ec2-user为用户主目录):
pm2 startup systemd -u ec2-user --hp /home/ec2-user
  1. 启用并启动PM2服务:
sudo systemctl enable pm2-ec2-user
sudo systemctl start pm2-ec2-user

验证修复效果

重启EC2实例后,执行以下命令检查状态:

# 检查Nginx运行状态
systemctl status nginx.service
# 检查PM2进程列表
pm2 list

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:42:46