如何在 x 秒后启动 cron 作业?

问题描述

我想我误解了 Kubernetes CronJobs。在 CKAD 考试中,有一个问题是每分钟运行一次 CronJob,但它应该在任意时间后开始。我没有看到 CronJobs 或 Jobs 的任何属性让它们在特定时间后启动。这应该是 cron 字符串的一部分还是我完全误解了?

解决方法

你可以这样做

sleep "seconds"; echo " * * * * * command" >> path/to/crontab

我觉得这个问题可能措辞不正确。这可能意味着每个星期六的每一分钟。

 * * * * SAT

或者每分钟到几个小时

* 9-17 * * *

https://crontab.guru/examples.html

,

你可以做类似的事情

@reboot sleep 60 && script.sh

虽然你没有特别提到启动时间。您还可以将睡眠添加到 crontab。

另一种方法是创建一个 systemd 服务(注意:在安装了 systemd 的系统上)

[Unit]
Description=cronjob with delay
After=(some criteria)

[Service]
Type=oneshot
ExecStart=/pathto/script.sh

[Install]
WantedBy=
,

您可以安排您的 CronJob 在特定日期/时间开始,而不是每分钟运行一次,或者您想设置它。有一个 powerful online tool 可以帮助您。例如:

0 0/10 10/1 ? * * *

将安排您的 CronJob 从一天的 10 点开始每 10 分钟运行一次。或者:

0 0/10 * ? * 6/1 *

将安排您的 CronJob 从周五开始每 10 分钟运行一次。

在使用这种特定方法时要记住的重要一点是要了解您的集群运行所在的时区:

所有 CronJob schedule: 次都基于 kube-控制器-管理器。

如果您的控制平面在 Pod 或裸机中运行 kube-controller-manager 容器,为 kube-controller-manager 容器设置的时区 确定 Cron 作业控制器使用的时区。

可以在下面找到有关调度的更多信息/示例:

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...