Linux操作系統(tǒng)死機(jī)處理方法有哪些
Linux 中,有如下幾種方法來(lái)獲取各種崩潰時(shí)產(chǎn)生的信息。
1.Core dump
Core dump 通常用來(lái)調(diào)試應(yīng)用程序錯(cuò)誤,當(dāng)某些應(yīng)用程序運(yùn)行出現(xiàn)異常崩潰時(shí),可以開啟系統(tǒng)的 core dump 功能,來(lái)得到一個(gè)程序崩潰時(shí)的內(nèi)存信息,用來(lái)分析崩潰原因:
在/etc/profile里加上(或者修改)一條:
ulimit -c 0
運(yùn)行命令:sysctl -w "kernel.core_name_format=/coredump/%n.core"
該命令意思是指core文件放在/coredump目錄下,文件名是進(jìn)程名+.core
2.Diskdump
diskdump工具提供了在單機(jī)上創(chuàng)建和采集vmcore(kernel dump)的能力,而無(wú)須使用網(wǎng)絡(luò)。當(dāng)內(nèi)核本身出現(xiàn)崩潰的時(shí)候,當(dāng)前的內(nèi)存和CPU狀態(tài)以及相關(guān)的信息都會(huì)被保存到一個(gè)支持diskdump的磁盤上的保留分區(qū)上。在下一次重新啟動(dòng)的時(shí)候,當(dāng)系統(tǒng)重新啟動(dòng),diskdump的初始化腳本會(huì)從保留分區(qū)中讀取保存的信息并創(chuàng)建一個(gè)vcore文件,然后這個(gè)文件被再次存放到/var/crash/目錄下,文件名為127.0.0.1-
如下是一個(gè)配置 HP SCSI 設(shè)備上啟用 diskdump 的過程,如果不是 HP SCSI 設(shè)備(即設(shè)備名為 /dev/sdX的形式),則無(wú)須執(zhí)行第三、四兩個(gè)步驟。但需要在第一步前先執(zhí)行命令: modprobe
diskdump
第一步:編輯 /etc/sysconfig/diskdump文件,將一個(gè)空白分區(qū)的設(shè)備名填入后保存退出,例如:
DEVICE=/dev/cciss/c0d0p2
第二步:初使化 dump 設(shè)備
#service diskdump initialformat
警告:該分區(qū)的所以數(shù)據(jù)會(huì)丟失。
第三步:使用 cciss_dump 模塊替換當(dāng)前的 cciss 模塊:
在 /etc/modprobe.conf 找到如下行:
alias scsi_hostadapter cciss
修改為:
alias scsi_hostadapter cciss_dump
再增加一行:
options cciss_dump dump_drive=1
注:假設(shè)diskdump文件中配置的為 /dev/cciss/c0d[#a]p[#b], 請(qǐng)?jiān)O(shè)置為: options cciss_dump dump_drive=[#a]
第四步:重建 initrd 文件:
#mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.old
#mkinitrd /boot/initrd-`uname -r`.img `uname -r`
第五步:設(shè)置 diskdump 服務(wù)能夠開機(jī)自啟動(dòng):
# chkconfig diskdump on
Linux1
3.Netdump
如果使用紅旗DC4.0 或 3.0 版本系統(tǒng),是不能支持 diskdump 的,可以利用netdump 來(lái)達(dá)到輸出vmcore 的目的。但是Netdump要求至少有一個(gè)服務(wù)器以及任意數(shù)目的客戶端。服務(wù)器用來(lái)接收客戶端死機(jī)時(shí)的信息,客戶端是經(jīng)常死機(jī)的機(jī)器。
(一)服務(wù)器配置:
(1).檢驗(yàn)netdump服務(wù)器是否安裝完畢:
rpm -q netdump-server
如果未安裝,請(qǐng)?jiān)诠獗P RedFlag/RPMS/ 目錄中找到 netdump-server 打頭的軟件包,執(zhí)行命令:
rpm -ivh netdump-server-x.x.x.rpm (x為版本號(hào))
進(jìn)行安裝。
(2).服務(wù)器包安裝后,用命令:
passwd netdump
更改用戶的密碼.
(3).打開服務(wù):
chkconfig netdump-server on
(4).運(yùn)行服務(wù)器:
service netdump-server start
(二)客戶端配置:
(1).校驗(yàn)客戶端是否已安裝
rpm -q netdump
如果未安裝,在光盤 RedFlag/RPMS/ 目錄中找到 netdum 打頭的軟件包,執(zhí)行命令:
rpm -ivh netdump-x.x.x.rpm (x為版本號(hào))
安裝.
(2).編輯文件/etc/sysconfig/netdump,添加如下行:
DEV=eth0
NETDUMPADDR=172.16.81.182
NETDUMPMACADDR=00:0C:29:79:F4:E0
172.16.81.182指 netdump 服務(wù)器地址。
(3).運(yùn)行下面的命令,出現(xiàn)提示符時(shí)輸入密碼:
service netdump propagate
(4).打開客戶端:
chkconfig netdump on
(5).運(yùn)行客戶端:
service netdump start
(6).測(cè)試
為了測(cè)試netdump的配置是否正確,在netdump客戶機(jī)上做下面操作:
cp /usr/share/doc/netdump-xxxxxx/crash.c .
gcc -DKERNEL -DMODULE -I/lib/modules/$(uname -r)/build/include -c crash.c
insmod ./crash.o
這會(huì)造成系統(tǒng)崩潰,會(huì)在netdump服務(wù)器的/var/crash/<客戶端IP>/目錄下,看到一個(gè)核心轉(zhuǎn)儲(chǔ)。當(dāng)客戶機(jī)正在轉(zhuǎn)儲(chǔ)數(shù)據(jù)到服務(wù)器的時(shí)候,你會(huì)看到一個(gè)名叫“vmcore-incomplete"的文件。當(dāng)轉(zhuǎn)儲(chǔ)結(jié)束后,該文件會(huì)改名成 "vmcore"。"vmcore"文件的大小會(huì)變化,可能達(dá)到幾個(gè)GB.在一個(gè)內(nèi)存是512M的系統(tǒng)上,上面的測(cè)試會(huì)產(chǎn)生大約510M的vmcore文件。