【问题标题】:How to set cron job for every 45 days如何设置每 45 天的 cron 作业
【发布时间】:2018-03-16 05:47:31
【问题描述】:

我想每 45 天使用 cron 作业发送一封电子邮件。因为,我已经做了 php
电子邮件脚本。所以我想每 45 天执行一次。你能帮我解决这个问题吗?

【问题讨论】:

  • 您找到解决方案了吗?

标签: cron


【解决方案1】:

该脚本可以每天运行并包装以检查天数模 45 是否等于常数:

10 13 * * *  test $(( `date +\%s`/24/60/60\%45 )) = 41 && your_script

我假设为 41,因此表达式将在 2012 年 1 月 12 日今天计算为真。百分比 '%' 是 crontab 中的特殊字符,需要转义。

【讨论】:

  • 我不知道 41 与什么有关。有人可以帮忙解释一下吗?
  • 我希望该条件在 2012 年 1 月 12 日为真,届时 OP 可能会测试此答案。所以我计算出我需要选择“每 45 天期间的第 41 天”作为运行日。
  • 啊,我明白了。谢谢
【解决方案2】:

来自 Crontab site

*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of        month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

这里真的没有什么可以“每 45 天”做一次

我会每天运行一次您的脚本,并让您的脚本检查您上次发送邮件后是否已过去 45 天。

<?php
    if($days_since_last_email >= 45) {
        //your existing send mail script here
    }
?>

【讨论】:

  • 我认为 Songo 的答案正是您想要的。
【解决方案3】:

同样可以通过为脚本安排 2 个 cron 作业来实现

从 2017 年 1 月 1 日开始:

0 0 1 1,4,7,10 *  abc.sh

0 0 15 2,5,8,11 *   abc.sh

【讨论】:

  • 应该注意的是,由于每个月的天数不同,这不会准确地每 45 天一次,而是大约每 45 天一次。不过,如果大约每 45 天一次就足够了,这是一个不错的选择。 +1
【解决方案4】:

有一种说法是“每 45 天”,但您必须指定要运行该作业的具体日期。可能您可能希望在 45 天内运行该作业。

第三个字段是月份。如果您在此字段中指定 *,它将每 45 天运行一次。

0 0 */45 * * /home/ramesh/backup.sh

试试这个

【讨论】:

  • 这是错误的,它会导致它在每个月的 1 天运行它不像你认为它不属于 0-31 的方式
【解决方案5】:

你可以使用

0 0 */45 * * php path/to/your/php/script

这将每 45 天在 00:00(午夜)运行任务。 资源: Cron jobs

【讨论】:

  • 可整除数 45 不在 1-31 范围内的天数。
  • cron 表达式的第 3 位表示月份中的第几天(范围从 1 到 31),而不是直接的天数。
猜你喜欢
  • 2012-02-04
  • 2015-07-15
  • 2013-09-06
  • 2014-06-23
  • 1970-01-01
  • 2014-08-07
  • 2015-01-09
  • 1970-01-01
  • 2012-07-31
相关资源
最近更新 更多