Ansible Cron 特殊时间 "You must specify time and date fields or special time." 错误
Ansible Cron special time "You must specify time and date fields or special time." error
我正在尝试将 cron 作业添加到 ansible playbook。这项工作需要很长时间,我需要在服务器正常关闭期间 运行 它。脚本如下:
- name: Set scheduled run
cron:
name: "cron run"
special_time: reboot
minute: "0"
hour: "20"
user: root
job: "/path/to/script"
没有 special_time: reboot
也能正常工作,但添加后出现以下错误:
"You must specify time and date fields or special time."
为了实现您的目标,您需要两个 cron 作业:
- 第一个将在给定时间重新启动服务器
- 第二个将在重启时执行 — 使用 crontab
@reboot
机制
请注意,这样做的副作用是您的脚本将在该节点的每次重新启动时执行,可能是在夜间、第一个 cron 重新启动节点时,或者每当节点重新启动时。
这将给这个剧本:
- name: Scheduled reboot
cron:
name: "Reboot to launch /path/to/script"
minute: "0"
hour: "20"
user: root
job: "/sbin/reboot"
- name: Launch script after reboot
cron:
name: "Launch /path/to/script after reboot"
special_time: reboot
user: root
job: "/path/to/script"
不过,要确保脚本不会在一天中间执行,您可以做的是验证脚本开始时的小时,例如:
#!/usr/bin/env sh
if [ "$(date +%H)" -lt 20 ]; then
exit 0
fi
我正在尝试将 cron 作业添加到 ansible playbook。这项工作需要很长时间,我需要在服务器正常关闭期间 运行 它。脚本如下:
- name: Set scheduled run
cron:
name: "cron run"
special_time: reboot
minute: "0"
hour: "20"
user: root
job: "/path/to/script"
没有 special_time: reboot
也能正常工作,但添加后出现以下错误:
"You must specify time and date fields or special time."
为了实现您的目标,您需要两个 cron 作业:
- 第一个将在给定时间重新启动服务器
- 第二个将在重启时执行 — 使用 crontab
@reboot
机制
请注意,这样做的副作用是您的脚本将在该节点的每次重新启动时执行,可能是在夜间、第一个 cron 重新启动节点时,或者每当节点重新启动时。
这将给这个剧本:
- name: Scheduled reboot
cron:
name: "Reboot to launch /path/to/script"
minute: "0"
hour: "20"
user: root
job: "/sbin/reboot"
- name: Launch script after reboot
cron:
name: "Launch /path/to/script after reboot"
special_time: reboot
user: root
job: "/path/to/script"
不过,要确保脚本不会在一天中间执行,您可以做的是验证脚本开始时的小时,例如:
#!/usr/bin/env sh
if [ "$(date +%H)" -lt 20 ]; then
exit 0
fi