systemd服务无法产生core文件

解决思路:

1、core的生成路径已被配置,确认非空 /proc/sys/kernel/core_pattern

2、core文件大小限制也去除了ulimit –c  core文件的大小限制也设置成了unlimited

3、/proc/sys/fs/suid_dumpable已设置为1,防止非本用户组的文件,无权限导致

4、不使用systemctl启动进程,也能产生core

5、查看进程文件的limits, cat  /proc/pid/limits ,发现Max core file size的软限制大小为0

6、查阅资料https://man7.org/linux/man-pages/man5/core.5.html

  systemd作为初始化框架,会决定其服务进程是否产生core,所以这里软限制soft limit变成了0。

  systemd服务设置LimitCORE=infinity,infinity表示无限大。

  https://man7.org/linux/man-pages/man5/systemd.exec.5.html 可以查看其他限制

7、由于我的systemd服务是通过chkconfig自动生成的,即使改掉了/run/systemd/generator.late/test_hr.service里配置,执行完systemctl daemon-reload后, service配置又会被改回去。

  可以修改全局配置文件/etc/systemd/system.conf,加上DefaultLimitCORE=infinity,再执行systemctl daemon-reexec是其生效。

  至此,我的systemd程序可以生成core文件了

posted @ 2023-05-18 21:00  ho966  阅读(405)  评论(0)    收藏  举报