【问题标题】:crontab with wget - why is it running twice?带有 wget 的 crontab - 为什么它运行两次?
【发布时间】:2011-05-26 09:22:54
【问题描述】:

我有一个从 web 服务运行并插入数据库的 php 脚本。

crontab -e

......上面的其他cron任务...... ... .. .. # 在 1610 运行测试 script.php 10 16 * * * /usr/bin/wget -q -O /home/username/my_cronjobs/logs/cron_adhoc http://localhost/project/script.php

显然,在 16:10,此脚本运行了两次! 16:10:01 和 16:25:02

有什么问题吗,与使用 wget 有关系吗? 还是我错误地设置了 cron 作业的时间表?

当我从浏览器运行http://localhost/project/script.php 时,它只会运行一次..

关于这个问题的任何想法?

我已经测试过了,没有其他用户在运行相同的工作......我怀疑 wget 的工作方式。

由于我的脚本需要至少 20 分钟才能完成而不发回响应(它正在从 webserviceces 中提取大量数据并保存到 db).. 怀疑默认情况下 wget 超时或重试会导致此问题。

【问题讨论】:

  • 显而易见的问题,你试过在命令行上运行吗?

标签: wget crontab


【解决方案1】:

这是谁的用户的 crontab?

检查是否有其他用户在不同时间为其设置了 cron 作业并忘记了它。

【讨论】:

  • 我只设置了一个,没有其他用户使用wget设置这个作业
  • wget 是否可能执行了两次,使用 -mirror 有帮助吗?
【解决方案2】:

我想我解决了我自己的问题。

我的 php 需要一些时间来加载,我猜 wget 会在某个默认指定时间后重试或超时。

我通过使用 /usr/bin/php 解决了它

【讨论】:

    【解决方案3】:

    The wget docs 给出 900 秒或 15 分钟的默认读取超时。

    如果在下载过程中的任何时间都没有收到数据超过 指定秒数,读取失败,下载为 重启

    这就是为什么您在 15 分钟后再次看到该文件被调用的原因。您可以通过添加参数和适当的秒数来指定更长的读取超时:

    --read-timeout=1800
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 2022-01-11
      • 1970-01-01
      • 2015-09-17
      相关资源
      最近更新 更多