如何更改或禁用python的核心转储?

时间:2014-09-24 09:36:17

标签: python linux dump

我需要更改python的核心转储文件的路径,或者完全禁用它。我知道可以使用以下方法更改linux中核心转储的模式和位置​​:

/proc/sys/kernel/core_pattern 

但这不是共享服务器和/或网格引擎上的合适解决方案。

那么,我怎样才能改变python核心转储的路径,或者如何禁用它与磁盘的刷新?

是否可以仅为我的用户将该模式更改为/dev/null

2 个答案:

答案 0 :(得分:2)

您可以使用shell命令ulimit来控制它:

ulimit -c 0  # Disable core file creation

没有该值,它将打印当前限制(将创建核心文件的最大大小):

ulimit -c

答案 1 :(得分:2)

我认为,此页面为您提供了所需内容: http://sigquit.wordpress.com/2009/03/13/the-core-pattern/

从页面引用:

  

“......内核配置包含名为”core_pattern“的文件:

/proc/sys/kernel/core_pattern
  

在我的系统中,该文件只包含这个单词:   芯

     

正如预期的那样,此模式显示了如何生成核心文件。从前一行可以理解两件事:生成的核心转储文件的文件名将是“核心”;第二,当前目录将用于存储它(因为指定的路径完全相对于当前目录)。

     

现在,如果我们更改该文件的内容......(当然是root用户)

$> mkdir -p /tmp/cores
$> chmod a+rwx /tmp/cores
$> echo "/tmp/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern
  

您可以在core_pattern文件中使用以下模式元素:

%p: pid
%: '%' is dropped
%%: output one '%'
%u: uid
%g: gid
%s: signal number
%t: UNIX time of dump
%h: hostname
%e: executable filename
%: both are dropped

此外,本部分涉及在处理节点集群时处理事物的特定需求:

  

不是很棒吗?!想象一下,您拥有一组计算机,并且您希望使用NFS目录来存储来自所有节点的所有核心文件。您将能够检测哪个节点生成了核心文件(使用主机名),哪个程序生成了它(使用程序名称),以及何时发生(使用unix时间)。

并将其配置为好,

  

之前完成的更改仅适用于下次重新启动。为了在将来重新启动时进行更改,您需要在“/etc/sysctl.conf”中添加以下内容:

# Own core file pattern...
kernel.core_pattern=/tmp/cores/core.%e.%p.%h.%t
  

sysctl.conf是控制/ proc / sys

下每个配置的文件