精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● Linux>>Linux之应用篇>>软件篇>>什么是Core文件并如何处理

主题:什么是Core文件并如何处理
发信人: skybird(晓湖)
整理人: qiaoqian(2001-12-30 23:56:09), 站内信件
什么是Core文件并如何处理?(晓湖原创)

晓湖 [email protected]

    你现在是不是已经安装了最最前沿的Linux内核,或者最新版的KDE、GNOME?这个时候你会经常发现在你的home或者root目录下有写个很大的文件,文件名是core。这是一个垃圾文件,一般都是在运行了某些处于测试版或者开发版的软件包之后产生的,比如那些最前沿的软件。

    这个文件都是用来让开发者进行编程调试的——用来找到某些程序崩溃掉重要的信息,比如各种变量的值、正在被调用的内容或者堆栈帧,然后确定程序崩溃的原因并做出相应的修改。一般都有一个专门调试程序来做一些辅助工作。(Linux下比较好的调试程序有gdb、ddd等)

    但是很多Linux用户并不是开发者,所以根本不需要这些core文件。你可以安全地把它删除,绝对不会有任何副作用。一个可以通过find命令找到所有core文件的方法是:

# find $HOME -name core exec rm -f {} \;

    这个方法是在用户自己没有建立名字叫做core的文件的前提之下进行的。如果你有你自己的文件叫做core,而不是程序自己产生的,请不要用这个方法。

    有个可以阻止core产生的方法就是对进程进行限制。Linux可以在指定的进程上进行约制,而且除了进程之外,还可以应用在内存使用、建立文件的大小、打开文件的总数、CPU时间等等。你可以在BASH下用一个内建命令来查看或者修改这些限制:

# ulimit -a

    这行指令可以显示当前正在运行的BASH中所有的限制。(注意:如果有多个BASH正在运行的话,每个都会有不同的限制。)要限制core的话,可以用:

# ulimit -c 0

(tcsh的使用者可以用另外一个名领来实现:limit coredumpsize 0)

    这样就可以把产生core的文件长度设置为零,但是只对从当前BASH中执行的进程有效。从另外一个BASH执行的进程或者从KDE/GNOME菜单中执行的进程不会受到任何影响,当它们崩溃的时候照样会产生core文件。所以我们就要在桌面环境启动之前对core文件的大小进行限制。

    这个时候~/.xsession文件就特别有用。例如,KDE用户可以建立一个包含如下内容的简单xsession文件:

#!/bin/bash
ulimit -c 0
startkde

    注意:一定要确定这个文件的执行权限是否打开。除非你是通过kdm或者gdm登入系统,否则~/.xsession会被忽略掉。

    如果顺利的话,core文件的大小会在桌面环境加载前的启动中被限制。只有.xsession所属的用户登入的时候core文件的大小才会被限制。如果有很多用户使用当前Linux系统中的图形环境的话,就需要把“ulimit -c 0”这一行指令添加到/etc/X11目录下Xsession文件的开始部分。

    如果你是通过“startx”来启动图形环境的话,你就需要把有关指令添加到相应的启动配置文件中。记住,一定要添加在“xinit”或者“startx”之前。

    “man ulimit”可以让你得到更多的帮助信息。

晓湖附:
————
    好久没有写东东上来了,这是本人就任板斧以来第一次发的东东,还希望各位兄弟姐妹大大支持!!!谢谢!


----
我的Linux配置:
P200/96M EDO RAM/4.3G+1.5G HD/Cirrus 5446显示卡(2M RAM)/10M Network Adapter with 
Redhat Linux 7.1 

http://wangxiaohu.126.com   <img src=http://uh1.gz.163.com photo?name=skybird alt=http://uh1.gz.163.com photo?name=skybird>ICQ: 3340023  

[关闭][返回]