我正在运行CentOS 5.5和服务器应用程序,有时我需要强制核心转储,所以我可以看到发生了什么事情。 如果我从shell启动服务器并发送kill SIGABRT,则会创build一个核心文件。 如果我从crontab启动相同的程序,然后我发送相同的信号到服务器被“杀死”,但没有核心文件生成。 是否有人知道为什么是这样的,需要添加到我的代码或更改系统设置,以允许核心文件生成?
只是一个侧面说明
我在/ etc / profile中将ulimit设置为无限制
我已经设定
在/etc/sysctl.conf中
另外我的服务器应用程序被添加到相同的loginID下的crontab,因为我从shell运行它。
任何帮助不胜感激
cron作业的当前工作目录可能与您所期望的不同。 尝试在您的crontab项目中执行cd /some/writeable/dir && yourdaemon
。 另外,你通常应该使用init或者Upstart或者类似的方法运行deamons。 请参阅进程pipe理 。
从man 5 core
:
在不同的情况下,核心转储文件不会被生成:
该进程没有写入核心文件的权限。 (默认情况下,核心文件被称为core,并在当前工作目录中创build,有关命名的详细信息,请参阅下面的内容)如果要创build的核心文件的目录不可写,则写入核心文件将失败一个具有相同名称的文件存在,不可写或不是一个常规文件(例如,它是一个目录或符号链接)。
与核心转储使用的名称相同的(可写,常规)文件已经存在,但是该文件有多个硬链接。
核心转储文件将被创build的文件系统已满; 或者已经用完inode; 或者以只读方式挂载; 或者用户已达到文件系统的配额。
核心转储文件将被创build的目录不存在。
该进程的RLIMIT_CORE(核心文件大小)或RLIMIT_FSIZE(文件大小)资源限制设置为零; 请参阅getrlimit(2)以及shell的ulimit命令的文档(csh(1)中的限制)。
进程正在执行的二进制文件没有启用读取权限。
该过程正在执行由进程的真实用户(组)ID以外的用户(组)所拥有的set-user-ID(set-group-ID)程序。 (但是,请参阅prctl(2)PR_SET_DUMPABLE操作的说明以及proc(5)中/ proc / sys / fs / suid_dumpable文件的说明。