1. 程式人生 > >如何查詢和修改Linux作業系統生成core dump檔案的預設路徑?

如何查詢和修改Linux作業系統生成core dump檔案的預設路徑?

最近遇到一個問題,SUSE Linux系統中的某個應用程式異常而最終引發了系統core dump,但遺憾的時在系統重啟後並沒有找到core檔案,影響了我們對問題的分析定位。

經過分析發現系統預設的core檔案生成路徑是/var/logs,但/var/logs目錄並非系統自帶的,系統初始安裝預設自帶的是/var/log,最終導致該系統出現core dump後並沒能生成core檔案,因此如何查詢和修改系統預設的core dump檔案生產路徑呢?方法如下:

一. 查詢core dump檔案路徑:
方法1:
# cat /proc/sys/kernel/core_pattern

方法2:
# /sbin/sysctl kernel.core_pattern

二. 修改core dump檔案路徑:
方法1:臨時修改:修改/proc/sys/kernel/core_pattern檔案,但/proc目錄本身是動態載入的,每次系統重啟都會重新載入,因此這種方法只能作為臨時修改。
/proc/sys/kernel/core_pattern
例:echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern

方法2:永久修改:使用sysctl -w name=value命令。
例:/sbin/sysctl -w kernel.core_pattern=/var/log/%e.core.%p

為了更詳盡的記錄core dump當時的系統狀態,可通過以下引數來豐富core檔案的命名:
%% 單個%字元
%p 所dump程序的程序ID
%u 所dump程序的實際使用者ID
%g 所dump程序的實際組ID
%s 導致本次core dump的訊號
%t core dump的時間 (由1970年1月1日計起的秒數)
%h 主機名
%e 程式檔名