五、一般在 CLI 上启动的程序,如果设置:ulimit -c unlimited
就可以在程序以外终止时生成 core dump 文件。但是对于 daemon 方式运行的程序,其与 CLI 启动的程序的主要区别是进程的运行环境,其中就包括
cwd(current working directory)。如果以相对路径方式定义 core 文件的格式,比如定义 /proc/sys/kernel/core_pattern 为:
core-%e-%p-%t
则一般来说,daemon 文件的 cwd 就是/,你可以通过/proc//cwd来查看,一般都是连接到/目录。而如果用户对这个目录没有写权限,那么就不会生成 core dump 文件了。
最直接的解决的方法,是修改/proc/sys/kernel/core_pattern为绝对路径:/data/coredump/core-%e-%p-%t
并且保证这样就基本 OK 了。
修改/proc/sys/kernel/core_pattern文件中的 core dump 文件格式为绝对路径,比如:
/data/coredump/core-%e-%p-%t