幫助中心
香港服務器租用幫助
香港服務器如何設置centos 6和centos 7的內核轉儲
2018-07-11 16:10:54

1. 內核轉儲作用

(1) 內核轉儲的最大好處是能夠保存問題發(fā)生時的狀態(tài)。

(2) 只要有可執(zhí)行文件和內核轉儲,就可以知道進程當時的狀態(tài)。

(3) 只要獲取內核轉儲,那么即使沒有復現環(huán)境,也能調試。

centos 6 設置內核轉儲

統一命令為以下幾條命令,后面是解釋

echo "* soft core unlimited" >> /etc/security/limits.conf

echo "kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t"? >> /etc/sysctl.conf

echo "fs.suid_dumpable = 2"? >> /etc/sysctl.conf

echo "DAEMON_COREFILE_LIMIT=’unlimited’" >> /etc/sysconfig/init

sysctl -p

編輯/etc/security/limits.conf,注意這是為所有進程設置的,但如果你有一個作為服務帳戶運行的進程,請用服務帳戶替換*。您必須重新啟動此過程以使此更改生效。

編輯/etc/sysctl.conf并添加放置核心文件和任何命名標準的位置。

文件名變量:

%e是文件名

%g是進程運行的gid?

%p是進程的PID?

%s是導致轉儲的信號

%t是轉儲發(fā)生的時間

%u是進程運行的uid

編輯/etc / sysconfig / init并設置核心文件限制。

centos 7 設置內核轉儲

echo -e "\n# enable coredump whith unlimited file-size for all users\n* soft core unlimited" >> /etc/security/limits.conf

echo -e "\nkernel.core_pattern=/tmp/core-%e-%s-%u-%g-%p-%t" >> /etc/sysctl.conf

echo -e "1" > /proc/sys/kernel/core_uses_pid

sysctl -p /etc/sysctl.conf

2,測試是否生效

例子的源代碼:

#include

int main(void)

{

int *a = NULL;

*a = 0x1;

return 0;

}

把以上源代碼,寫成一個a.c文件后,編譯a.c文件產生一個a.out的可執(zhí)行文件:

#gcc -g a.c -o a.out

修改a.out文件的權限后,執(zhí)行它:

#./a.out

就會顯示:

Segmentation fault(core dump)

這表示在/tmp目錄下, 已經生成了a.out對應的內核轉儲文件。

注意:后面帶有(core dump), 才說明轉儲文件成功生成了。

USA-IDC特推出香港折扣服務器租用,支持測試,售完即止歡迎點擊下圖了解詳情

USA-IDC為您提供免備案服務器 0元試用
立即聯系在線客服,即可申請免費產品試用服務
立即申請