【问题标题】:Nomad periodic doesn't run bash scriptNomad 定期不运行 bash 脚本
【发布时间】:2018-09-13 18:29:03
【问题描述】:

我在游牧民族下面有这个周期性任务。目的是每 5 分钟在主机 nomad3 上运行一个脚本。我还在下面包含了脚本的内容。

job "periodic" {
  datacenters = ["dc1"]

  type = "batch"

  periodic {
    cron             = "*/5 * * * * *"
    prohibit_overlap = true
    time_zone        = "UTC"
  }

  group "periodic" {
    count = 1

    restart {
      interval = "5m"
      attempts = 10
      delay    = "25s"
      mode     = "delay"
    }

    task "cronjob-test" {
      driver = "exec"

      constraint {
        attribute = "${node.unique.name}"
        value = "nomad3"
      }

      config {
        command = "/bin/bash"
        args = ["/usr/local/bin/cronjob-test.sh"]
      }

      resources {
        cpu = 100 # Mhz
        memory = 10 # MB

        network {
          mbits = 10

          # Request for a dynamic port
          port "uptime" {
          }
        }
      }
    }
  }
}

cronjob-test.sh 包含:

#!/usr/bin/env bash

DATE=$(date '+%F-%s')
touch /tmp/$DATE

脚本位于游牧主机nomad3。我应该在/tmp 中看到一个文件,其格式是我在 bash 脚本中指定的,但我没有看到这个。需要帮助了解正在发生的事情。

【问题讨论】:

  • 我已经在帖子中包含了脚本。它低于游牧工作定义。
  • 是的,如果您查看作业定义,它是脚本的绝对路径。

标签: bash nomad


【解决方案1】:

下面的脚本会在 /tmp 下创建一个 0 字节的文件:-

DATE=$(date '+%F-%s')
touch /tmp/$DATE //file name would be 2018-04-04-%s

检查您的 DATE 变量是否设置正确。只需添加一个像 $DATE 这样的 echo 命令并检查它是否被接受。

【讨论】:

  • 这很奇怪。在我的环境中,它会创建一个 0 字节的文件,如下所示:-rw-rw-r-- 1 vagrant vagrant 0 Apr 4 11:11 2018-04-04-1522840263
  • 如果它正在创建一个 0 字节文件 2018-04-04-1522840263 它工作正常。您的脚本只会这样做。
  • 但问题是:它没有创建那个文件。我在游牧定期工作中期待这一点。
【解决方案2】:

看来我使用的是 chrooted 的 exec 驱动程序。我尝试使用raw_exec,它成功了。然后我通过在配置中的chroot_env 中添加目标目录来重新尝试使用exec,它也可以正常工作。

【讨论】:

    【解决方案3】:

    使用此代码:

    config {
        command = "/bin/bash"
        args = ["-c","/usr/local/bin/cronjob-test.sh"]
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2018-07-05
      • 1970-01-01
      • 2017-11-04
      相关资源
      最近更新 更多