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

如何在AWS EC2实例启动时自动运行start.sh脚本

解决AWS EC2开机自动在Screen中运行start.sh的问题

原脚本的问题

  • Cloud-init本身以root权限执行User data,不需要sudo su,这条命令会创建子shell,后续命令在子shell执行完后就随子shell退出,导致screen会话无法留存。
  • 直接运行screen是交互式启动逻辑,而cloud-init的执行环境是非交互式的,无法创建前台会话,必须用后台启动参数。
  • cd命令未明确指定到root家目录(/root),非交互环境下可能无法正确切换到目标路径。

修正后的User data脚本

#!/bin/bash
# 创建后台分离模式的screen会话(命名为mysession),并在其中执行start.sh
screen -dmS mysession /root/start.sh

关键说明

  • -dmS:d表示后台分离运行,m强制创建新会话,S指定会话名称(方便后续查看和连接)。
  • 使用/root/start.sh绝对路径,避免路径切换的不确定性,确保脚本能被准确定位执行。

验证步骤

  1. 实例重启后,连接EC2执行screen -ls,查看是否存在名为mysession的活跃会话。
  2. 要进入会话查看脚本输出,执行screen -r mysession。
  3. 排查执行日志请查看/var/log/cloud-init-output.log,该日志会记录User data脚本的所有输出和错误,比cloud-init.log更适合定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:55:47