AWS Linux下保活flaky Python脚本遇bash语法错误排查
问题根因
你的脚本报syntax error: unexpected end of file是语法和操作错误共同导致的:
- Bash的
while循环语法和Python不同,你误用了Python的冒号结尾写法,且漏写了循环必需的do起始标记和done闭合标记,解析器读到文件末尾都没找到循环结束标识,直接抛出语法错误。 - 权限设置命令写反了:
chmod -x runProgram.sh是移除脚本的可执行权限,要授予可执行权限需要用chmod +x runProgram.sh(不过你直接用bash runProgram.sh调用时不需要可执行权限,这个错误不影响当前运行,但后续直接执行脚本会报权限不足)。 - 直接写
script.py不会自动调用Python解释器,除非你给Python脚本加了可执行权限且开头写了正确的Python shebang,否则会报命令不存在错误。
修复后的保活脚本
把runProgram.sh的内容替换为以下代码即可:
#!/usr/bin/env bash while true do # 环境默认Python版本为3就用python3,是Python2就替换为python python3 ./script.py sleep 1 done
运行说明
- 如果你要直接通过
./runProgram.sh方式启动,先执行chmod +x runProgram.sh授予可执行权限,再运行即可。 - 如果你用
bash runProgram.sh方式启动,不需要额外设置权限,直接执行命令就能跑。 - 如果需要后台常驻运行、不占用当前终端、退出SSH也不停止,可以用以下命令启动,脚本运行日志会存在同目录的
run.log文件里方便排查问题:nohup bash runProgram.sh > run.log 2>&1 &
内容的提问来源于stack exchange,提问作者keynesiancross
相关产品推荐
相关产品推荐

