![每个会话的进程核心文件的格式文件名](https://linux22.com/image/530327/%E6%AF%8F%E4%B8%AA%E4%BC%9A%E8%AF%9D%E7%9A%84%E8%BF%9B%E7%A8%8B%E6%A0%B8%E5%BF%83%E6%96%87%E4%BB%B6%E7%9A%84%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E5%90%8D.png)
有没有办法更改每个会话的核心文件名格式,而不是整个机器的格式?
在 Linux 上,我能找到的唯一方法是以 root 身份使用 sysctl:
sudo /sbin/sysctl -w "kernel.core_pattern=core-%H-%N-%P"
在 Solaris 上,root 也存在同样的问题
coreadm -g core-%n-%f-%p
但不幸的是,这两个命令都会永久改变所有用户的系统,这是我希望避免的。
我想要的是能够在我的 .bashrc 中放置一个命令,并且作为非特权用户将我的核心文件放置并命名在我想要的位置。
编辑:
刚刚发现你可以在 Solaris 中使用
coreadm -p core-%n-%f-%p $$
有谁了解 Linux 吗?
答案1
据我所知,在 Linux 上,核心文件名模式是一个全局内核设置。
核心文件名由以下因素决定:format_corename
在fs/exec.c
。它是根据corename
变量,仅通过kernel.core_pattern
系统控制。
但也许可以通过将核心模式设置为 来获得您想要的行为|/path/to/foo %h %p
,这会导致核心文件内容被传输到/path/to/foo
可执行文件中。请注意,管道后面的内容是按空格拆分成单词。