coredump_filter用于所有进程

时间:2016-04-09 22:04:45

标签: linux linux-kernel

是否可以在启动时为linux中的所有进程设置/ proc // coredump_filter? / proc / self / coredump_filter将为当前shell设置,所有进程在shell中运行,但不会在引导后对所有进程运行。这是可以在内核中修补的东西(目前该值设置为0x33)?

3 个答案:

答案 0 :(得分:4)

核心详情可在man core ...

中找到

http://man7.org/linux/man-pages/man5/core.5.html

内核参数文档为我们提供了这个

coredump_filter=
        [KNL] Change the default value for
        /proc/<pid>/coredump_filter.
        See also Documentation/filesystems/proc.txt.

如果使用grub编辑您的/etc/default/grub文件并修改此变量。

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

到这个

GRUB_CMDLINE_LINUX_DEFAULT="quiet coredump_filter=0x21"

然后运行update-grub2来更新启动配置文件。注意0x21。比特参数是

 bit 0  Dump anonymous private mappings.
 bit 1  Dump anonymous shared mappings.
 bit 2  Dump file-backed private mappings.
 bit 3  Dump file-backed shared mappings.
 bit 4 (since Linux 2.6.24)
        Dump ELF headers.
 bit 5 (since Linux 2.6.28)
        Dump private huge pages.
 bit 6 (since Linux 2.6.28)
        Dump shared huge pages.
 bit 7 (since Linux 4.4)
        Dump private DAX pages.
 bit 8 (since Linux 4.4)
        Dump shared DAX pages.

答案 1 :(得分:0)

正如您可以看到coredump_filter的定义,您可以在引导期间更改所有进程的行为,只需在内核引导命令行上添加coredump_filter = 0x33。

http://lxr.free-electrons.com/source/kernel/fork.c?v=2.6.35#L463

答案 2 :(得分:0)

根据您的用例,madvise()可能很有用。请注意,平台支持因madvise()而异。

使用MADV_DONTDUMP作为第三个参数。

madvise(void *addr, size_t length, MADV_DONTDUMP)