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 卡住而不退出的主要内容,如果未能解决你的问题,请参考以下文章

炉石传说经常卡住不动,就是打到一半就不会动了,要退出再进,请问怎么解决

我怎样才能杀死卡住的工作而不杀死 Spark 中的应用程序?

执行yum相关命令总是卡住,ctrl+c也退出不了

假如Linux卡住了怎么解决

ebs标准程序过账卡住

linux卡住了怎么办