1.
ulimit -c 查看當前系統配置的core檔案大小
ulimit -c unlimited 修改core檔案大小為無限制
2.
/proc/sys/kernel/core_uses_pid 改成1, 設定成可以控制產生core檔案的檔案名稱。
修改檔案的方法,必須使用 echo "1"
> /proc/sys/kernel/core_uses_pid的方式放入
3.
/proc/sys/kernel/core_pattern 可以控制core檔案儲存位置和檔案名稱格式
推薦/home/core/core.%p.%u.%e_%t,其中最好將該目錄的使用權限設定為777
4.
/proc/sys/fs/suid_dumpable 有些程式會切換使用者,那個時候不能將正常產生core檔案,這時要設定裡面為1
修改檔案的方法,必須使用 echo "1"
> //proc/sys/fs/suid_dumpable的方式放入
修改了檔案後,要將程式重新啟動,如果這個程式是由另一個拉起的,則重啟的順序是,1.拉起程式,2.被拉起程式
在使用者的~/.bash_profile裡加上ulimit
-c unlimited來讓特定的使用者能產生core檔案
而ulimit -c 1024 可以設定core檔案大小。。。
此外對於產生的core檔案的命名規則,以下的兩個proc檔案系統下的檔案會對他產生影響:
1、/proc/sys/kernel/core_uses_pid能控制產生的core檔案的檔案名稱中是否添加pid作為擴充
2、/proc/sys/kernel/core_pattern能設定格式化的core檔案儲存位置或檔案名稱,
例如:/corefile/core-%e-%p-%t將會控制所產生的core檔案會存放到/corefile目錄下,產生的檔案名稱為core-命令名-pid-時間戳記
/home/enip/core/core
/corefiles/core.%p.%e
在Linux中,一般當進程非正常退出時,會產生一個core檔案,這個檔案是進程猝死時記憶體的轉儲檔案,也稱為core dump。
查看Linux指令碼解析方式:echo $0
1.檢驗core是否開啟
以see/see登入
csh: limit; coredumpsize = 0 , 說明沒有開啟core, 否則開啟了。
bash: ulimit –a ; 關注紅色部分。 如果是0,表示core沒有開啟,否則開啟了。
2.開啟core,設定大小
如果沒有開啟,永久開啟······以root/huawei使用者登入,vi /etc/security/limits.conf ,注意紅色部分soft < hard大小
臨時指定大小,以see/see使用者登入,
csh: limit coredumpsize 4096000
bash: ulimit -c 4096000 大小低於/etc/security/limits.conf中設定的大小
注意:這些都是臨時的,一旦該活躍視窗關閉後再次開啟,設定的core大小就失效了。
3. core路徑配置
注意:指定的core路徑有寫入許可權
以see/see使用者登入,/sbin/sysctl -a |grep core, 查看目前core檔案產生的路徑
然後肉眼查一下 kernel.core_pattern 和 kernel.core_uses_pid 兩個配置值是多少。
kernel.core_pattern: core檔案路徑
kernel.core_uses_pid: 產生core檔案,尾碼是否帶pid 1:帶; 0 :不帶
臨時修改路徑(需要root許可權)
/sbin/sysctl -w kernel.core_pattern=/core/core.%e.%p
/sbin/sysctl -w kernel.core_uses_pid=0
%p – insert pid into filename --- 顯示進程號
%u – insert current uid into filename
--- 使用者ID
%g – insert current gid into filename
--- 組ID
%s – insert signal that caused the coredump into the filename
---添加導致產生core的訊號
%t – insert UNIX time that the coredump occurred into filename
--- 時間
%h – insert hostname where the coredump happened into filename
--- 主機名稱
%e – insert coredumping executable name into filename --- 名字
永久修改路徑 (需要root許可權,機器重新啟動也會生效):
修改/etc/sysctl.conf,添加2行即可:
kernel.core_pattern =
/core/core.%e.%p
kernel.core_uses_pid =
0
設定生效
sysctl -p /etc/sysctl.conf
4. 產生core(用於自測試)
以see/see使用者,ksh;kill -11 $$
5. 定位分析core
gdb container core檔案
然後:bt
6 .關閉core
臨時關閉:
csh: limit coredumpsize 0
bash: ulimit -c 0
注意:這些都是臨時的,一旦該活躍視窗關閉後再次開啟,設定的core大小就失效了。
永久關閉:
以root/huawei使用者登入,vi /etc/security/limits.conf ,注意紅色部分為0
1.
ulimit -c 查看當前系統配置的core檔案大小
ulimit -c unlimited 修改core檔案大小為無限制
2.
/proc/sys/kernel/core_uses_pid 改成1, 設定成可以控制產生core檔案的檔案名稱。
修改檔案的方法,必須使用 echo "1"
> /proc/sys/kernel/core_uses_pid的方式放入
3.
/proc/sys/kernel/core_pattern 可以控制core檔案儲存位置和檔案名稱格式
推薦/home/core/core.%p.%u.%e_%t,其中最好將該目錄的使用權限設定為777
4.
/proc/sys/fs/suid_dumpable 有些程式會切換使用者,那個時候不能將正常產生core檔案,這時要設定裡面為1
修改檔案的方法,必須使用 echo "1"
> //proc/sys/fs/suid_dumpable的方式放入
修改了檔案後,要將程式重新啟動,如果這個程式是由另一個拉起的,則重啟的順序是,1.拉起程式,2.被拉起程式
在使用者的~/.bash_profile裡加上ulimit
-c unlimited來讓特定的使用者能產生core檔案
而ulimit -c 1024 可以設定core檔案大小。。。
此外對於產生的core檔案的命名規則,以下的兩個proc檔案系統下的檔案會對他產生影響:
1、/proc/sys/kernel/core_uses_pid能控制產生的core檔案的檔案名稱中是否添加pid作為擴充
2、/proc/sys/kernel/core_pattern能設定格式化的core檔案儲存位置或檔案名稱,
例如:/corefile/core-%e-%p-%t將會控制所產生的core檔案會存放到/corefile目錄下,產生的檔案名稱為core-命令名-pid-時間戳記
/home/enip/core/core
/corefiles/core.%p.%e
在Linux中,一般當進程非正常退出時,會產生一個core檔案,這個檔案是進程猝死時記憶體的轉儲檔案,也稱為core dump。
查看Linux指令碼解析方式:echo $0
1.檢驗core是否開啟
以see/see登入
csh: limit; coredumpsize = 0 , 說明沒有開啟core, 否則開啟了。
bash: ulimit –a ; 關注紅色部分。 如果是0,表示core沒有開啟,否則開啟了。
2.開啟core,設定大小
如果沒有開啟,永久開啟······以root/huawei使用者登入,vi /etc/security/limits.conf ,注意紅色部分soft < hard大小
臨時指定大小,以see/see使用者登入,
csh: limit coredumpsize 4096000
bash: ulimit -c 4096000 大小低於/etc/security/limits.conf中設定的大小
注意:這些都是臨時的,一旦該活躍視窗關閉後再次開啟,設定的core大小就失效了。
3. core路徑配置
注意:指定的core路徑有寫入許可權
以see/see使用者登入,/sbin/sysctl -a |grep core, 查看目前core檔案產生的路徑
然後肉眼查一下 kernel.core_pattern 和 kernel.core_uses_pid 兩個配置值是多少。
kernel.core_pattern: core檔案路徑
kernel.core_uses_pid: 產生core檔案,尾碼是否帶pid 1:帶; 0 :不帶
臨時修改路徑(需要root許可權)
/sbin/sysctl -w kernel.core_pattern=/core/core.%e.%p
/sbin/sysctl -w kernel.core_uses_pid=0
%p – insert pid into filename --- 顯示進程號
%u – insert current uid into filename
--- 使用者ID
%g – insert current gid into filename
--- 組ID
%s – insert signal that caused the coredump into the filename
---添加導致產生core的訊號
%t – insert UNIX time that the coredump occurred into filename
--- 時間
%h – insert hostname where the coredump happened into filename
--- 主機名稱
%e – insert coredumping executable name into filename --- 名字
永久修改路徑 (需要root許可權,機器重新啟動也會生效):
修改/etc/sysctl.conf,添加2行即可:
kernel.core_pattern =
/core/core.%e.%p
kernel.core_uses_pid =
0
設定生效
sysctl -p /etc/sysctl.conf
4. 產生core(用於自測試)
以see/see使用者,ksh;kill -11 $$
5. 定位分析core
gdb container core檔案
然後:bt
6 .關閉core
臨時關閉:
csh: limit coredumpsize 0
bash: ulimit -c 0
注意:這些都是臨時的,一旦該活躍視窗關閉後再次開啟,設定的core大小就失效了。
永久關閉:
以root/huawei使用者登入,vi /etc/security/limits.conf ,注意紅色部分為0