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
Ubuntu gcloud命令在crontab-e中不工作?_Ubuntu_Google Cloud Platform_Cron_Gcloud - Fatal编程技术网

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
    作业
201126更新 抱歉,我误解了您的问题,并认为您也想在计算引擎实例上运行
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.