我需要更改python的核心转储文件的路径,或者完全禁用它。我知道可以使用以下方法更改linux中核心转储的模式和位置:
/proc/sys/kernel/core_pattern
但这不是共享服务器和/或网格引擎上的合适解决方案。
那么,我怎样才能改变python核心转储的路径,或者如何禁用它与磁盘的刷新?
是否可以仅为我的用户将该模式更改为/dev/null
?
答案 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
下每个配置的文件