问题描述
我正在尝试为SageMaker素描本(它最终只是一个.sh文件)设置启动生命周期配置,无论执行什么操作,笔记本似乎都在启动时超时。我尽可能地简化了所有内容,以至于注释掉了#!/bin/bash
之外的所有内容,但我仍然超时。检查cloudwatch,这会显示在日志中:
/bin/bash: /tmp/OnStart_2020-08-11-07-01jgfhhkwa: /bin/bash^M: bad interpreter: No such file or directory
通过测试,我还发现,如果我在#!/bin/bash
之前添加回车符,则会在日志中得到:
/tmp/OnStart_2020-08-11-06-444y3fobzp: line 1: $'\r': command not found
基于this on the \r error和this on the ^M error,这似乎是Windows和Unix格式文本之间的不兼容。但是,我正在通过Windows计算机上的aws编辑生命周期配置:
有什么方法可以通过AWS在Windows机器上编辑此字段,但另一端可以用unix正确编写?
解决方法
实际上,这与基于this的不同操作系统中的特殊字符表示有关,您可以使用notepad ++轻松地将dos表示形式转换为unix表示形式,然后只需“粘贴为纯文本”即可,效果很好
- 复制到记事本++视图
- 显示符号
- 显示所有符号
- 将没有任何CRLF的“ / r”替换为LF,在UNIX中有效
- 复制并粘贴为纯文本
这样做可以解决问题