2013-04-16 78 views
27

我想更改核心轉儲文件的默認位置,以便每次生成核心轉儲時都轉到該目錄。另外,是否可以將轉儲文件的名稱保存爲墜毀在這個位置的文件?更改核心轉儲的位置

+0

的 「發生了什麼」 的版本:http://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is-不在當前目錄? –

回答

44

是的。您可以更改/proc/sys/kernel/core_pattern以定義用於生成核心文件的路徑名。如需更多信息,請參閱man core

例如:

echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern 

會導致所有未來的核心轉儲/tmp產生並命名爲core_[program].[pid]

+12

用於'tee'技巧+1)注意,還有'sysctl'。然後它是'sysctl -w kernel.core_pattern ='/ tmp/core_%e。%p'' – hek2mgl

+0

這不適用於CentOS 7. – Ali

+1

@Ali - 「不工作」不是一個有用的問題描述。如果不檢查[核心聯機幫助頁](http://www.unix。)中的項目符號點,com/man-page/centos/5/core /),如果問題依然存在,請提出一個新問題,評論不是討論新問題的地方。 – mata

23

按照接受的答案的指示之前,它可能是好的想法檢查/proc/sys/kernel/core_pattern的內容以查看Redhat abrt系統是否正在使用中。

-> cat /proc/sys/kernel/core_pattern 
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e 

如果是在使用,那麼你已經有了管理,你想你覆蓋它之前,瞭解核心文件相當廣泛的方案。

簡而言之,ABRT:

  1. 這裏提出的核心文件:/var/spool/abrt/
  2. 具有一個啓動的命令abrt-gui
  3. 增加了一個帶關於失敗流程附加信息的核心文件的GUI。
  4. 的配置與此文件:/etc/abrt/abrt-action-save-package-data.conf

一個使用它來改變這條線在配置文件中常見的絆腳石:

ProcessUnpackaged = no 

改變,要對從捕獲核心文件的自制程序進程,否則它只會捕獲程序包管理器安裝的程序的核心文件。

[編輯回答如何利用信息轉儲] 要檢查覈心轉儲我這樣做:

cd /var/spool/abrt/XXXXXXX 
gdb $(cat executable) coredump 

有可能是一個更好的方式來如此,但廣發行一直擔任我很好,所以我沒有尋找其他方法。只需將XXXXXXX替換爲包含您的coredump文件的文件夾即可。 gdb命令被剪切並粘貼就緒。

參考文獻:

Redhat Book

CentOS Forum

+0

感謝這個信息。我收到了coredump文件,但是如何用abrt打開它? – Devos

+0

如果您不確定核心文件是如何生成的,只需執行#file core.XYZ - 這將顯示爲生成核心文件而執行的命令。 – kumar