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