【问题标题】:Cronjob stuck without exitingCronjob 卡住而不退出
【发布时间】:2021-08-17 02:58:30
【问题描述】:

我的 Centos 7 服务器上运行着 50 多个 cronjobs,如下所示。 curl -s https://url.com/file.php

每 10 分钟运行一次。从 shell 手动运行时,只需 1-2 分钟。使用 cronjob 也可以正常工作。问题是它在执行后没有退出。当我使用 ps 命令检查我的进程时,它显示了许多以前日期(甚至是 10 天前)的 cronjobs,这些任务累积了我服务器中的总进程数。

crontab 中的行:- */10 * * * * 用户 curl -s https://url.com/file.php > /dev/null 2>&1

这有什么原因吗?如果我没记错的话,这发生在最新的补丁更新之后。 请帮忙。

【问题讨论】:

  • 不要找原因,要找原因

标签: linux curl cron centos centos7


【解决方案1】:

修改您的命令以将日志存储在日志文件中,而不是将其转储到 /dev/null。

选项

  • --max-time
  • --connect-timeout
  • --retry
  • --retry-max-time

可用于控制curl 命令的行为。

【讨论】:

  • 我试过了,但问题是同一个 cronjob 不会每次都卡住。这不一样。正如我所说,该作业已成功执行,并且我得到了写入文件时所需的结果。作业完成后不退出。
  • 在您的 crontab 行中,“用户”是什么?它应该只是*/10 * * * * curl -s https://url.com/file.php >/tmp/out1 2>/tmp/out2。与 /tmp/out?文件,您将看到所有消息。如果 cron 执行没有完成,这意味着你的 curl 命令没有退出。因此,他需要额外的参数来确保它超时。或者还有另一个问题,没有日志我们找不到。还要查看您的 cron 日志。详情请看stackoverflow.com/questions/4883069/…
  • 最坏的情况,创建一个脚本,首先杀死所有“卡住”的卷曲,然后开始一个新的。这样至少你不会累积僵尸卷曲。
  • cron 行中的用户告诉它应该作为哪个用户运行脚本。我尝试将输出写入临时文件,但它只有在从终端手动执行时才会显示的结果。我有 cron 日志,这也表明 cron 执行时没有任何错误。看起来我应该使用超时选项,直到找到原因。
猜你喜欢
  • 1970-01-01
  • 2021-08-27
  • 2021-10-14
  • 2016-03-07
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多