linux core檔案設定

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.