Ubuntu gcloud命令在crontab-e中不工作?
我的谷歌云项目中运行的项目很少,我正试图在特定的时间停止它们,并在特定的时间开始 我创建了一个脚本文件,用于停止Ubuntu gcloud命令在crontab-e中不工作?,ubuntu,google-cloud-platform,cron,gcloud,Ubuntu,Google Cloud Platform,Cron,Gcloud,我的谷歌云项目中运行的项目很少,我正试图在特定的时间停止它们,并在特定的时间开始 我创建了一个脚本文件,用于停止test.sh #!/bin/bash gcloud compute instances stop instance1 现在我尝试了crontab-e并添加了这个 30 01 1-31 1-12 1-5 /home/user/test.sh >> /var/log/test.log 但这并没有停止我的gcp实例,也没有创建任何日志文件 更新, 我只是对时间感到困惑 00
test.sh
#!/bin/bash
gcloud compute instances stop instance1
现在我尝试了crontab-e
并添加了这个
30 01 1-31 1-12 1-5 /home/user/test.sh >> /var/log/test.log
但这并没有停止我的gcp实例,也没有创建任何日志文件
更新,
我只是对时间感到困惑
00 10 * * 1-5 start.sh
00 01 * * 1-5 stop.sh
00 01 * * 6 stop.sh
星期六和星期天这将如何工作?我想在周六凌晨1点停止实例,并在周一上午10点重新开始。我的配置正确吗
从周一到周五,应在凌晨1点关闭,上午10点开始
`crontab`作为根(!?)运行,因此未对`gcloud'进行身份验证`
可能有更好的选择,但通过概述解决方案:
- 创建具有适当权限的服务帐户,以供
cron
- 为实例上的root用户激活服务帐户
(在启动期间或根据gcloud auth Activate service account
任务)cron
- 运行
作业cron
cron
我认为您希望在本地运行cron
诀窍(!)是确保您的命令使用绝对路径
哪个gcloud
对我来说,这会返回/snap/bin/gcloud
,因为我在Ubuntu上运行,并且安装了gcloud
。这对你来说可能会有所不同
那么,以下几点对我来说很有用:
stop.sh
:
#/usr/bin/env bash
PROJECT=[[YOUR-PROJECT]]
实例=[[YOUR-INSTANCE]]
ZONE=[[YOUR-ZONE]]
echo“[$(日期--rfc-3339=秒)]停止${INSTANCE}”
/snap/bin/gcloud计算实例停止${INSTANCE}\
--项目=${project}\
--区域=${zone}\
--冗长=调试
echo“[$(日期--rfc-3339=秒)]已停止${INSTANCE}”
注意我已经添加了,但您可能更愿意减少或完全忽略这一点
确保脚本是可执行的:
chmod+x/path/to/stop.sh
然后crontab-e
:
# Stackoverflow: 64994379
* * * * * /path/to/stop.sh >>/path/to/stop.log 2>&1
注意您想要在这里。这可能更简单,因为
以及:
无论您的主机(运行cron
)是否正在运行,Google都为您提供了运行的额外好处
如果您想非常勤奋的话,您可以增加脚本以迭代所有项目并关闭每个实例。在这种情况下,最好让脚本通知您它的成功或失败,这样您就不会自满。我建议您遵循关于
我没有使用sudo crontab-e,也没有以root身份运行。我只使用了
crontab-e
你激发了我的好奇心!我目前正在做其他的事情,但我会在美国假日周末找点时间试试这个。当然!给我几天时间,我已经用一个解决方案更新了我的答案。希望这对你有用!很抱歉耽搁了,今天是美国感恩节,我不在电脑旁。好的,那么您希望在每个工作日的10:00开始实例,并希望在星期二(星期一)到星期六(星期五)的01:00停止实例?这将是:0010**1-5start.sh
和0010**2-6stop.sh
。我鼓励你信任,但要核实。设置这些,然后检查它们!查看文档时,感觉太复杂了。我想用一种简单的方法,我有一台本地计算机,我想使用crontab
和gcloud
命令,在特定的时间直接从本地pc为启动和停止计算实例安排两个作业,然后确保您遵循我在博客文章中提到的所有步骤,运行gcloud无疑需要将api键设置为环境变量。在脚本中添加变量的导出可能会解决此问题。但是,请注意不要像其他人在回答中提到的那样使其“世界可读”,这不是实现解决方案的最佳方式。@Ramansilopal您可以提供我需要设置哪些变量才能使其工作,因为我对它不太熟悉。运行crontab的服务器在哪里运行?在普莱姆?在谷歌云上?
[2020-11-26 09:39:01-08:00] Stopping [[YOUR-INSTANCE]]
DEBUG: Running [gcloud.compute.instances.stop] with arguments: [--project: "[[YOUR-PROJECT]]", --verbosity: "debug", --zone: "[[YOUR-ZONE]]", INSTANCE_NAMES:1: "['[[YOUR-INSTANCE]]']"]
Stopping instance(s) [[YOUR-INSTANCE]]...
......done.
Updated [https://compute.googleapis.com/compute/v1/projects/[[YOUR-PROJECT]]/zones/[[YOUR-ZONE]]/instances/[[YOUR-INSTANCE]]].
INFO: Display format: "none"
DEBUG: SDK update checks are disabled.
[2020-11-26 09:39:04-08:00] Stopped [[YOUR-INSTANCE]]
[2020-11-26 09:40:01-08:00] Stopping [[YOUR-INSTANCE]]
DEBUG: Running [gcloud.compute.instances.stop] with arguments: [--project: "[[YOUR-PROJECT]]", --verbosity: "debug", --zone: "[[YOUR-ZONE]]", INSTANCE_NAMES:1: "['[[YOUR-INSTANCE]]']"]
Stopping instance(s) [[YOUR-INSTANCE]]...
.....done.
Updated [https://compute.googleapis.com/compute/v1/projects/[[YOUR-PROJECT]]/zones/[[YOUR-ZONE]]/instances/[[YOUR-INSTANCE]]].
INFO: Display format: "none"
DEBUG: SDK update checks are disabled.
[2020-11-26 09:40:04-08:00] Stopped [[YOUR-INSTANCE]]
[2020-11-26 09:41:01-08:00] Stopping [[YOUR-INSTANCE]]
DEBUG: Running [gcloud.compute.instances.stop] with arguments: [--project: "[[YOUR-PROJECT]]", --verbosity: "debug", --zone: "[[YOUR-ZONE]]", INSTANCE_NAMES:1: "['[[YOUR-INSTANCE]]']"]
Stopping instance(s) [[YOUR-INSTANCE]]...
......done.
Updated [https://compute.googleapis.com/compute/v1/projects/[[YOUR-PROJECT]]/zones/[[YOUR-ZONE]]/instances/[[YOUR-INSTANCE]]].
INFO: Display format: "none"
DEBUG: SDK update checks are disabled.
[2020-11-26 09:41:05-08:00] Stopped [[YOUR-INSTANCE]]
1. Compute Engine Instance: A Compute Engine instance we want to run on a
schedule.
2.Cloud Functions functions: Functions to start and stop the instance we
want to schedule.
3.Pub/Sub messages: Messages sent and received for each start and stop
event.
4.Cloud Scheduler jobs: Jobs to make calls on a set schedule to start
and stop the instance.