0

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

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

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

4

3 回答 3

1

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

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

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

于 2018-04-04T09:24:54.420 回答
0

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

于 2018-04-27T10:42:15.287 回答
-1

使用此代码:

config {
    command = "/bin/bash"
    args = ["-c","/usr/local/bin/cronjob-test.sh"]
  }
于 2019-07-23T01:13:36.617 回答