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

如何自动停止空闲SageMaker笔记本?配置后实例无法启动求助

解决SageMaker笔记本实例空闲自动停止配置导致启动失败的问题

问题根源

你的生命周期启动脚本存在三个致命问题:

  • 未定义$DIR变量,导致crontab中指定的脚本路径无效
  • set -e指令会让脚本在遇到任何错误时立即终止,比如网络波动导致wget失败就会中断实例启动流程
  • 未给下载的脚本添加执行权限,同时crontab的默认环境变量不全,可能导致Python脚本无法正常执行

修复后的完整脚本

替换原生命周期配置的OnStart脚本为以下内容:

#!/bin/bash

# 设置空闲时间阈值(单位:秒)
IDLE_TIME=300
# 定义脚本和日志的完整路径
SCRIPT_PATH="/home/ec2-user/SageMaker/autostop.py"
LOG_PATH="/home/ec2-user/SageMaker/auto-stop-idle.log"

# 确保日志目录存在
mkdir -p /home/ec2-user/SageMaker

# 下载自动停止脚本,增加重试逻辑避免网络问题
echo "下载自动停止脚本..."
if ! wget -O "$SCRIPT_PATH" https://raw.githubusercontent.com/mariokostelac/sagemaker-setup/master/scripts/auto-stop-idle/autostop.py; then
    echo "首次下载失败,重试..."
    wget -O "$SCRIPT_PATH" https://raw.githubusercontent.com/mariokostelac/sagemaker-setup/master/scripts/auto-stop-idle/autostop.py
fi

# 赋予脚本执行权限
chmod +x "$SCRIPT_PATH"

# 配置定时任务,避免重复添加
echo "配置定时任务..."
(crontab -l 2>/dev/null | grep -v autostop.py; echo "*/5 * * * * /usr/bin/python3 $SCRIPT_PATH --time $IDLE_TIME >> $LOG_PATH 2>&1") | crontab -

# 配置CloudWatch日志(不需要可注释此行)
echo "配置CloudWatch日志..."
curl https://raw.githubusercontent.com/mariokostelac/sagemaker-setup/master/scripts/publish-logs-to-cloudwatch/on-start.sh | sudo bash -s auto-stop-idle "$LOG_PATH"

核心修复说明

  1. 移除set -e:改用错误重试逻辑,避免小问题导致实例启动失败
  2. 定义完整路径变量:替换未定义的$DIR,确保脚本和日志路径明确
  3. 添加执行权限:给下载的Python脚本赋予可执行权限,避免crontab执行时出错
  4. 避免重复定时任务:用grep -v autostop.py过滤已有任务,防止重复添加
  5. 完善日志输出:用>> $LOG_PATH 2>&1同时捕获标准输出和错误信息,方便排查问题

验证方法

  1. 将修复后的脚本保存为SageMaker生命周期配置的OnStart脚本
  2. 重新启动笔记本实例
  3. 实例启动后,登录执行crontab -l确认定时任务已添加
  4. 查看/home/ec2-user/SageMaker/auto-stop-idle.log验证脚本运行状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:25:10