【问题标题】:crontab core dump not generated?没有生成 crontab 核心转储?
【发布时间】:2023-03-27 21:12:01
【问题描述】:

我在 MicroZed 上运行 Ubuntu 15.04,我正在执行一个从 crontab 脚本中取消引用空指针的程序。注意:我故意尝试创建核心转储。

问题是,当我从命令行运行程序时,会按预期生成核心转储,但是从 crontab 运行时,我无法在任何预期位置找到文件。

关于是否实际创建核心转储的任何想法,如果是,在哪里创建?

【问题讨论】:

  • 你在 /var/cache/abrt 中看到了什么吗?另外,你可以使用 find 来定位它吗?此外,如果您要更改 cronjob 中的目录,您可能需要检查那里。
  • 在这个 microzed 上运行的 ubuntu 版本没有 /var/cache/abrt 目录。我已经尝试从根目录运行 find 并没有找到任何东西。
  • 啊,好吧,看看 /proc/sys/kernel/core_pattern(也可以是 /proc/sys/kernel/core),它应该会告诉你它在哪里转储它。您还可以编辑该文件以将核心转储发送到您想要的任何位置。此外,如果它使用 apport,您可能会在 /var/crash 中找到转储
  • 这就是奇怪的地方。我编辑了 /proc/sys/kernel/core_pattern 以将文件输出到 /tmp。从命令行运行良好,但是当从我的 crontab 运行时,那里没有生成任何东西。另外,我已经验证了 crontab 运行正常。

标签: ubuntu cron core dump


【解决方案1】:

cronjob 在/bin/sh 下的有限环境中运行。可能发生的情况是默认核心转储大小设置为零。 我相信这可以在/etc/security/limits.conf 中看到和配置,但是检查这一点的最简单方法是运行以下 cronjob:

* * * * * ulimit -a > ~/cron.ulimit.txt

如果文件~/cron.ulimit.txt 表示核心文件大小为zero blocks,则 cron-job 将永远不会生成核心文件。

您可以通过运行包装脚本wrapper 来创建核心文件,该脚本设置核心文件大小的 ulimit。例如。

#!/usr/bin/env bash
ulimit -c unlimited
/path/to/binary

此脚本可以作为 cronjob 运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2013-07-24
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多