Nomad periodic 没有 运行 bash 脚本
Nomad periodic doesn't run bash script
我在nomad下面有这个周期性任务。目的是每 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 脚本中指定的格式相同,但我没有看到。需要帮助了解正在发生的事情。
下面的脚本将在 /tmp 下创建一个 0 字节的文件:-
DATE=$(date '+%F-%s')
touch /tmp/$DATE //file name would be 2018-04-04-%s
检查您的 DATE 变量是否设置正确。只需添加一个类似 $DATE 的回显命令并检查它是否被接受。
看来我使用的是已 chroot 的 exec
驱动程序。我尝试使用 raw_exec
并且有效。然后我通过在配置中的 chroot_env
中添加目标目录来重新尝试使用 exec
,它也能正常工作。
使用此代码:
config {
command = "/bin/bash"
args = ["-c","/usr/local/bin/cronjob-test.sh"]
}
我在nomad下面有这个周期性任务。目的是每 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 脚本中指定的格式相同,但我没有看到。需要帮助了解正在发生的事情。
下面的脚本将在 /tmp 下创建一个 0 字节的文件:-
DATE=$(date '+%F-%s')
touch /tmp/$DATE //file name would be 2018-04-04-%s
检查您的 DATE 变量是否设置正确。只需添加一个类似 $DATE 的回显命令并检查它是否被接受。
看来我使用的是已 chroot 的 exec
驱动程序。我尝试使用 raw_exec
并且有效。然后我通过在配置中的 chroot_env
中添加目标目录来重新尝试使用 exec
,它也能正常工作。
使用此代码:
config {
command = "/bin/bash"
args = ["-c","/usr/local/bin/cronjob-test.sh"]
}