ubuntu - gcloud 命令在 crontab -e 中不起作用?

标签 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 10 * * 1-5 start.sh
00 01 * * 1-5 stop.sh

00 01 * * 6 stop.sh
这在周六和周日将如何运作?我想在星期六停止实例 1am并在星期一重新开始 10am .我的配置正确吗?
从周一到周五,它应该在凌晨 1 点关闭,并在早上 10 点开始。

最佳答案

`crontab` 以 root (!?) 身份运行,因此未对 `gcloud` 进行身份验证
可能有更好的选择,但通过解决方案的概述:

  • 创建一个具有适当权限的服务帐户以供 cron 使用
  • 激活服务帐号gcloud auth activate-service-account用于实例上的 root(在启动期间或根据 cron 任务)
  • 运行 cron工作

  • 201126更新
    抱歉,我误读了您的问题,并认为您想运行 cron在 Compute Engine 实例上也是如此。
    我想你想运行 cron本地。
    诀窍 (!) 是确保您的命令使用绝对路径。
    which gcloud
    
    对我来说,这会返回 /snap/bin/gcloud因为我在 Ubuntu 上运行并且有 gcloud快速安装。这对您来说可能会有所不同。
    然后,以下对我有用:stop.sh :
    #!/usr/bin/env bash
    
    PROJECT=[[YOUR-PROJECT]]
    INSTANCE=[[YOUR-INSTANCE]]
    ZONE=[[YOUR-ZONE]]
    
    echo "[$(date --rfc-3339=seconds)] Stopping ${INSTANCE}"
    
    /snap/bin/gcloud compute instances stop ${INSTANCE} \
    --project=${PROJECT} \
    --zone=${ZONE} \
    --verbosity=debug
    
    echo "[$(date --rfc-3339=seconds)] Stopped ${INSTANCE}"
    

    NOTE I've added --verbosity=debug but you may prefer to reduce or omit this entirely.


    确保脚本可执行:
    chmod +x /path/to/stop.sh
    
    然后crontab -e :
    # Stackoverflow: 64994379
    * * * * * /path/to/stop.sh >>/path/to/stop.log 2>&1
    

    NOTE You want 30 01 1-31 1-12 1-5 here. This may be simpler as 30 01 * * 1-5


    和:
    [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]]
    
    谷歌 Cloud Scheduler无论您的主机(正在运行 cron )是否正在运行,都可以为您提供运行的额外好处。
    如果您想非常勤奋,您可以扩充脚本以迭代所有项目并关闭每个实例。在这种情况下,最好让脚本也通知您其成功或失败,以免您自满。

    关于ubuntu - gcloud 命令在 crontab -e 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64994379/

    相关文章:

    mysql - 如何使用 Google Compute Engine 保持持久 SQL 代理 Unix 套接字

    docker - 您可以在 Cloud Run 容器中运行沙盒容器吗?

    cron - 如何创建每 3 个月执行一次的 cron 作业?

    amazon-web-services - 如何在 .ebextensions 配置中为 crontab 多个环境使用条件 (AWS Elastic Beanstalk)

    java - 处理 Cron 作业

    python - Django:导入错误:没有名为 social.apps.django_app 的模块

    authentication - smbclient NT_STATUS_ACCESS_DENIED

    python - 从 AI 笔记本访问 GCP Cloud SQL?

    ubuntu - 将加密狗许可证从 Ubuntu 共享到 VirtualBox Windows 7

    python - 如何在 ubuntu 上安装开放库?