通过cron执行的googlecloudsdk代码
我正试图通过Crontab实现一个自动代码来关闭和启动我的googlecloud帐户中的VM实例。该操作系统是Ubuntu12LTS,安装有谷歌服务帐户,因此它可以在我的谷歌云帐户上处理读/写操作 我的实际代码在这个文件/home/ubu12lts/cronfiles/resetvm.sh中通过cron执行的googlecloudsdk代码,cron,google-cloud-platform,gcloud,Cron,Google Cloud Platform,Gcloud,我正试图通过Crontab实现一个自动代码来关闭和启动我的googlecloud帐户中的VM实例。该操作系统是Ubuntu12LTS,安装有谷歌服务帐户,因此它可以在我的谷歌云帐户上处理读/写操作 我的实际代码在这个文件/home/ubu12lts/cronfiles/resetvm.sh中 #!/bin/bash echo Y | gcloud compute instances stop my-vm-name --zone us-central1-a sleep 120s gcloud co
#!/bin/bash
echo Y | gcloud compute instances stop my-vm-name --zone us-central1-a
sleep 120s
gcloud compute instances start my-vm-name --zone us-central1-a
echo "completed"
当我这样调用上面的文件时
$ bash /home/ubu12lts/cronfiles/resetvm.sh
它工作得很好,很好
现在我想在cron中设置它,这样它会每小时自动运行一次。所以我做了
$ sudo crontab -e
并在cron中添加了此代码
0 * * * * /bin/sh /home/ubu12lts/cronfiles/resetvm.sh >>/home/ubu12lts/cron.log
并使脚本可执行
chmod +x /home/ubu12lts/cronfiles/resetvm.sh
我还通过添加一个创建.txt文件的示例命令和一条示例消息来测试crontab,它工作得非常好
但是上面的gcloudsdk代码不能通过cron工作。VM在我的GC计算引擎中既不停止也不启动
有人能帮忙吗
非常感谢。您已将该条目添加到root的crontab中,而您的云SDK安装是为其他用户设置的(我猜是ubu121lts) 您应该使用以下方法在ubu121lts的crontab中添加条目:
crontab -u ubu121lts -e
此外,您的条目当前计划每小时在第0分钟运行。这就是你想要的吗?我以前也遇到过类似的问题。我通过在script.sh中强制配置文件,加载gcloud环境变量来修复它。示例如下: #!/bin/bash 来源/etc/profile echo Y| gcloud计算实例停止我的虚拟机名称--区域us-central1-a sleep 120s gcloud计算实例启动我的虚拟机名称--区域 us-central1-a回音“已完成”
这也帮助我调整了GKE中的节点数。顺便说一句,Gclcoud会在$HOME/.config/gcloud下的文件中查找缓存的凭据以及存储的属性(如项目),gcloud有时会在$HOME未设置的情况下运行。您可能需要在脚本中设置$HOME以进行补偿,或者使用$GCLOUD_CONFIG选择完全不同的配置目录供脚本使用。)感谢您的尝试。是的,我在ubu12ots用户中也添加了相同的cron,但运气不好。是的,我希望它每小时运行0分钟。您可以查看cron日志并查看是否有任何错误吗?