Cronjob 卡住而不退出
Posted
技术标签:
【中文标题】Cronjob 卡住而不退出【英文标题】:Cronjob stuck without exiting 【发布时间】: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
这有什么原因吗?如果我没记错的话,这发生在最新的补丁更新之后。 请帮忙。
【问题讨论】:
不要找原因,要找原因。 【参考方案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 日志。详情请看***.com/questions/4883069/…。
最坏的情况,创建一个脚本,首先杀死所有“卡住”的卷曲,然后开始一个新的。这样至少你不会累积僵尸卷曲。
cron 行中的用户告诉它应该作为哪个用户运行脚本。我尝试将输出写入临时文件,但它只有在从终端手动执行时才会显示的结果。我有 cron 日志,这也表明 cron 执行时没有任何错误。看起来我应该使用超时选项,直到找到原因。以上是关于Cronjob 卡住而不退出的主要内容,如果未能解决你的问题,请参考以下文章
炉石传说经常卡住不动,就是打到一半就不会动了,要退出再进,请问怎么解决