如何在Google Cloud Compute Instance启动时自动运行Python脚本
GCP 实例定时启动并自动运行Python脚本修复方案
一、定时启动实例设置
要实现早上自动开启实例,无需手动操作,直接用GCP自带的实例调度功能即可:
- 进入GCP控制台 → Compute Engine → 实例调度程序
- 新建调度计划,选择目标实例,设置触发时间为你需要的早间时段,操作选择「启动实例」
- 注意时区要选择你所在的当地时区,不要使用默认UTC,避免定时时间偏差
二、startup-script 启动脚本失效修复
GCP启动脚本默认以root用户执行,你当前的脚本缺少环境兼容、日志排查配置,修正方案如下:
- 修正脚本内容,补全全路径、添加日志输出,修改后内容如下:
#!/bin/bash # 所有执行日志输出到指定文件,方便后续排查 exec >> /var/log/python_start.log 2>&1 echo "===== 启动脚本执行时间: $(date) =====" # 切换到代码目录 cd /home/issaca/main/ # 可选:如果你之前是在普通用户issaca下安装的Python依赖,切换到issaca用户执行脚本,避免找不到依赖 su - issaca -c "nohup $(which python3) main.py &" # 不需要切换用户的话直接用下面的命令 # nohup $(which python3) main.py & echo "脚本启动完成,Python进程PID: $!"
- 配置GCP元数据:编辑目标实例,在「元数据」板块新增键值对,键必须为startup-script(大小写完全匹配,不能写错),值直接粘贴上面修改后的完整脚本内容
- 配置目录权限:SSH登录实例后执行以下命令,避免权限不足无法访问代码:
sudo chmod -R 755 /home/issaca/main/ && sudo chown -R issaca:issaca /home/issaca/main/
三、cronjob 失效修复
如果要使用cron实现开机自动运行脚本,按以下步骤配置:
- 把上面修正后的脚本保存为
/home/issaca/main/start.sh,执行命令赋予执行权限:chmod +x /home/issaca/main/start.sh - 编辑cron配置:SSH登录后执行
crontab -e,添加如下规则:
@reboot /bin/bash /home/issaca/main/start.sh >> /var/log/python_cron.log 2>&1
- 确认cron服务开机自启:
# Debian/Ubuntu系统执行 sudo systemctl enable --now cron # CentOS/RHEL系统执行 sudo systemctl enable --now crond
四、故障排查方法
如果配置后仍然不生效,直接查看日志文件定位问题:
- 查看startup-script日志:
cat /var/log/python_start.log - 查看cron执行日志:
cat /var/log/python_cron.log
常见新手问题为Python依赖仅安装在普通用户环境,root执行时找不到包,用上面脚本里的su切换到普通用户执行即可解决。
内容的提问来源于stack exchange,提问作者Issac Abraham
相关产品推荐
相关产品推荐

