Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过cron执行的googlecloudsdk代码_Cron_Google Cloud Platform_Gcloud - Fatal编程技术网

通过cron执行的googlecloudsdk代码

通过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

我正试图通过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 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日志并查看是否有任何错误吗?