[發(fā)明專利]一種保存Linux內(nèi)核打印信息的方法及裝置有效
| 申請?zhí)枺?/td> | 201410645609.4 | 申請日: | 2014-11-12 |
| 公開(公告)號: | CN105653247B | 公開(公告)日: | 2019-06-07 |
| 發(fā)明(設(shè)計(jì))人: | 王勝華 | 申請(專利權(quán))人: | 阿里巴巴集團(tuán)控股有限公司 |
| 主分類號: | G06F9/4401 | 分類號: | G06F9/4401 |
| 代理公司: | 北京清源匯知識產(chǎn)權(quán)代理事務(wù)所(特殊普通合伙) 11644 | 代理人: | 馮德魁 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 開曼群島;KY |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 保存 linux 內(nèi)核 打印 信息 方法 裝置 | ||
本申請公開了一種保存Linux內(nèi)核打印信息的方法和裝置。其中所述保存Linux內(nèi)核打印信息的方法包括:接收內(nèi)核打印信息;獲取保留內(nèi)存的環(huán)形緩沖區(qū)的使用狀態(tài)數(shù)據(jù);根據(jù)所述使用狀態(tài)數(shù)據(jù),將所述內(nèi)核打印信息存儲到所述保留內(nèi)存的環(huán)形緩沖區(qū)。采用本申請?zhí)峁┑姆椒ǎ軌蛟诓粩嚯姷那闆r下記錄多次啟動的內(nèi)核打印信息,避免了多進(jìn)程處理和文件寫操作,從而達(dá)到提高記錄多次啟動的內(nèi)核打印信息的實(shí)時性的效果。
技術(shù)領(lǐng)域
本申請涉及Linux內(nèi)核領(lǐng)域,具體涉及一種保存Linux內(nèi)核打印信息的方法及裝置。
背景技術(shù)
Linux是一個一體化內(nèi)核系統(tǒng),實(shí)質(zhì)是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一套基于Linux內(nèi)核的完整操作系統(tǒng)被稱為Linux操作系統(tǒng)。目前,Linux操作系統(tǒng)以其高效和靈活性日益得到廣泛應(yīng)用。在Linux操作系統(tǒng)實(shí)際運(yùn)行過程中,為了增強(qiáng)操作系統(tǒng)的穩(wěn)定性,需要查看日志記錄區(qū)中的內(nèi)核打印信息,以便分析系統(tǒng)異常時的狀態(tài)信息,有效地定位發(fā)生系統(tǒng)異常的原因。Linux內(nèi)核發(fā)生的系統(tǒng)異常包括操作系統(tǒng)在不知名的原因下重啟,或是操作系統(tǒng)掛死導(dǎo)致的看門狗復(fù)位等異常。
一種常用的記錄內(nèi)核打印信息的方法是使用Linux自帶的dmesg日志記錄內(nèi)核打印信息。該方法將printk函數(shù)的內(nèi)核打印消息記錄到長度為__LOG_BUF_LEN字節(jié)的環(huán)形緩沖區(qū)中,__LOG_BUF_LEN值從4KB到1MB,在配置內(nèi)核時進(jìn)行選擇。如果環(huán)形緩存區(qū)被填滿的話,printk將繞回環(huán)形緩存區(qū)的起始位置寫入新的記錄信息,同時覆蓋掉老的記錄信息。當(dāng)需要獲取內(nèi)核打印信息時,可在Linux shell下調(diào)用dmesg命令。該命令將從環(huán)形緩沖區(qū)中讀取內(nèi)核打印信息,并顯示在控制臺上。采用這種方法的缺點(diǎn)是,只能記錄本次啟動的內(nèi)核打印信息,即使在不斷電的情況下,也不能實(shí)現(xiàn)記錄系統(tǒng)前幾次啟動的內(nèi)核打印信息。
另一種常用的記錄內(nèi)核打印信息的方法是通過守候進(jìn)程klogd、syslogd將內(nèi)核打印信息寫入文件。該方法通過printk的環(huán)形隊(duì)列和兩個守候進(jìn)程(syslogd和klogd)記錄內(nèi)核打印信息。Linux系統(tǒng)執(zhí)行/etc/init.d/sysklogd啟動兩個守候進(jìn)程klogd和syslogd。klogd進(jìn)程通過系統(tǒng)調(diào)用syslog()或直接讀取/proc/kmsg文件來獲取環(huán)形緩沖區(qū)的內(nèi)容,并將讀取的內(nèi)容傳遞給syslogd進(jìn)程進(jìn)行處理。syslogd進(jìn)程根據(jù)/etc/syslog.conf中的配置,將內(nèi)核打印信息寫入到/var/log/下的不同文件中。相對上述dmesg日志方法,這種方法的優(yōu)點(diǎn)是能夠?qū)崿F(xiàn)多次啟動的內(nèi)核打印信息的記錄。然而,當(dāng)系統(tǒng)出現(xiàn)異常后,printk的內(nèi)核打印信息不但要寫入到內(nèi)存的環(huán)形緩沖區(qū)中,而且還要等待klogd和syslogd進(jìn)程來處理新寫入的信息。在這兩個進(jìn)程處理后,還要將處理結(jié)果寫入到磁盤文件中,而磁盤文件的寫入操作又是十分耗時的。由此,采用該方法可能導(dǎo)致系統(tǒng)重啟前的大量內(nèi)核打印信息無法被及時的記錄下來。可見,由于該方法自身的處理流程過于復(fù)雜,而且涉及文件的寫入操作,從而影響內(nèi)核打印信息記錄的實(shí)時性。
因此,現(xiàn)有技術(shù)存在記錄多次啟動的內(nèi)核打印信息的處理流程過于復(fù)雜且涉及文件寫操作的問題。
發(fā)明內(nèi)容
本申請?zhí)峁┮环N保存Linux內(nèi)核打印信息的方法和裝置,以解決現(xiàn)有技術(shù)存在記錄多次啟動的內(nèi)核打印信息的處理流程過于復(fù)雜且涉及文件寫操作的問題。
本申請?zhí)峁┮环N保存Linux內(nèi)核打印信息的方法,包括:
接收內(nèi)核打印信息;
獲取保留內(nèi)存的環(huán)形緩沖區(qū)的使用狀態(tài)數(shù)據(jù);所述保留內(nèi)存是指自加載引導(dǎo)程序開始即不對其再進(jìn)行分配的內(nèi)存,包括頭區(qū)和環(huán)形緩沖區(qū);所述頭區(qū)存儲所述環(huán)形緩沖區(qū)的使用狀態(tài)數(shù)據(jù),所述使用狀態(tài)數(shù)據(jù)至少包括所述保留內(nèi)存的環(huán)形緩沖區(qū)的頭指針指向的內(nèi)存地址、尾指針指向的內(nèi)存地址、環(huán)形緩沖區(qū)的使用長度和環(huán)形緩沖區(qū)是否已滿標(biāo)志;所述保留內(nèi)存的環(huán)形緩沖區(qū)存儲所述內(nèi)核打印信息;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里巴巴集團(tuán)控股有限公司,未經(jīng)阿里巴巴集團(tuán)控股有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410645609.4/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- LINUX內(nèi)核動態(tài)加載方法
- 一種Linux嵌入式系統(tǒng)的安全啟動方法
- 一種加快嵌入式Linux系統(tǒng)啟動的方法
- Linux文件系統(tǒng)的多點(diǎn)備份和實(shí)時保護(hù)方法
- 基于硬件的Linux軟件開發(fā)系統(tǒng)及其構(gòu)建方法
- 將VxWorks任務(wù)移植到Linux的方法及裝置
- 一種Linux內(nèi)核接管socket鏈接的方法和裝置
- 一種Linux系統(tǒng)的備份和還原方法
- 一種基于Linux系統(tǒng)盤的寫過濾系統(tǒng)和方法
- 一種基于Linux系統(tǒng)盤的熱插拔方法和系統(tǒng)





