如何仅为特定应用程序更改核心模式?

时间:2015-06-04 07:34:28

标签: linux unix core

我的应用程序要求以特定模式生成核心文件。

如何在不影响其他流程的情况下执行此操作?

如果/ proc是只读的,我该怎么做?

1 个答案:

答案 0 :(得分:3)

man core告诉我们:

  

将核心转储管道插入程序

     

从内核2.6.19开始,Linux支持替代语法        /proc/sys/kernel/core_pattern个文件。如果是第一个字符        file是管道符号(|),然后该行的其余部分是        解释为要执行的程序。而不是被写入        磁盘文件,核心转储作为程序的标准输入。

     

请注意以下几点:

     
      
  • 必须使用绝对路径名(或a)指定程序         相对于根目录的路径名,/),必须立即         按照'|'字符。

  •   
  • 为运行程序而创建的进程以用户和组的形式运行         根

  •   
  • 可以向程序提供命令行参数(因为Linux         2.6.24),由空格分隔(最大总长度为         128字节)。

  •   
  • 命令行参数可以包含任何%说明符         以上所列。例如,传递进程的PID         被转储,请在参数中指定%p。

  •   

你可以在那里放一个脚本,比如说。

| /path/to/myscript %p %s %c

您可以检测哪个进程正在触发coredump:(man core):

       %%  a single % character
       %p  PID of dumped process
       %u  (numeric) real UID of dumped process
       %g  (numeric) real GID of dumped process
       %s  number of signal causing dump
       %t  time of dump, expressed as seconds since the Epoch,  1970-01-01
           00:00:00 +0000 (UTC)
       %h  hostname (same as nodename returned by uname(2))
       %e  executable filename (without path prefix)
       %E  pathname of executable, with slashes ('/') replaced by exclama‐
           tion marks ('!').
       %c  core file size soft resource limit of crashing  process  (since
           Linux 2.6.24)

现在你所要做的就是“为你自己的

以外的其他进程做”默认事情“