精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux內(nèi)核輸出的日志去哪里了

系統(tǒng) Linux
那當(dāng)我們調(diào)用printk函數(shù)后,這些輸出的信息到哪里去了呢?我們又如何在linux下的用戶態(tài),查看這些信息呢?

[[422485]]

因?yàn)閳D片比較大,微信公眾號(hào)上壓縮的比較厲害,所以很多細(xì)節(jié)都看不清了,我單獨(dú)傳了一份到github上,想要原版圖片的,可以點(diǎn)擊下方的閱讀原文,或者直接使用下面的鏈接,來訪問github:

https://github.com/wangyuntao/linux-kernel-illustrated

另外,精致全景圖系列文章,以及之后的linux內(nèi)核分析文章,我都會(huì)整理到這個(gè)github倉庫里,歡迎大家star收藏。

熟悉linux內(nèi)核,或者看過linux內(nèi)核源碼的同學(xué)就會(huì)知道,在內(nèi)核中,有一個(gè)類似于c語言的輸出函數(shù),叫做printk,使用它,我們可以打印各種我們想要的信息,比如內(nèi)核當(dāng)前的運(yùn)行狀態(tài),又或者是我們自己的調(diào)試日志等,非常方便。

那當(dāng)我們調(diào)用printk函數(shù)后,這些輸出的信息到哪里去了呢?我們又如何在linux下的用戶態(tài),查看這些信息呢?

為了解答這些疑問,我畫了一張printk全景圖,放在了文章開始的部分,這張圖既包含了printk在內(nèi)核態(tài)的實(shí)現(xiàn),又包含了其輸出的信息在用戶態(tài)如何查看。

我們可以根據(jù)這張圖,來理解printk的整體架構(gòu)。

在內(nèi)核編碼時(shí),如果想要輸出一些信息,通常并不會(huì)直接使用printk,而是會(huì)使用其衍生函數(shù),比如 pr_err / pr_info / pr_debug 等,這些衍生函數(shù)附帶了日志級(jí)別、所屬模塊等其他信息,比較友好,但其最終還是調(diào)用了printk。

printk函數(shù)會(huì)將每次輸出的日志,放到內(nèi)核為其專門分配的名為ring buffer的一個(gè)槽位里。

ring buffer其實(shí)就是一個(gè)用數(shù)組實(shí)現(xiàn)的環(huán)形隊(duì)列,不過既然是環(huán)形隊(duì)列,就會(huì)有一個(gè)問題,即當(dāng)ring buffer滿了的時(shí)候,下一條新的日志,會(huì)覆蓋最開始的舊的日志。

ring buffer的大小,可以通過內(nèi)核參數(shù)來修改。

printk在將日志放到ring buffer后,會(huì)再調(diào)用系統(tǒng)console的相關(guān)方法,將還未輸出到系統(tǒng)控制臺(tái)的消息,繼續(xù)輸出到控制臺(tái),這個(gè)后面會(huì)詳細(xì)說,這里就暫不贅述。

以上就是printk在內(nèi)核態(tài)的實(shí)現(xiàn)。

在用戶態(tài),我們有幾個(gè)方式,可以查看printk輸出的內(nèi)核日志,比如使用dmesg命令,cat /proc/kmsg文件,或者是使用klogctl函數(shù)等,這些方式分別對(duì)應(yīng)于全景圖中用戶態(tài)的橙色、綠色、和藍(lán)色的部分。

dmesg命令,在默認(rèn)情況下,是通過讀取/dev/kmsg文件,來實(shí)現(xiàn)查看內(nèi)核日志的。

當(dāng)該命令運(yùn)行時(shí),dmesg會(huì)先調(diào)用open函數(shù),打開/dev/kmsg文件,該打開操作在內(nèi)核中的邏輯,會(huì)為dmesg分配一個(gè)file實(shí)例,在這個(gè)file實(shí)例里,會(huì)有一個(gè)seq變量,該變量記錄著下一條要讀取的內(nèi)核日志在ring buffer中的位置。

剛打開/dev/kmsg文件時(shí),這個(gè)seq指向的就是ring buffer中最開始的那條日志。

之后,dmesg會(huì)以打開的/dev/kmsg文件為媒介,不斷的調(diào)用read函數(shù),從內(nèi)核中讀取日志消息,每讀取出一條,seq的值都會(huì)加一,即指向下一條日志的位置,依次往復(fù),直到所有的內(nèi)核日志讀取完畢,dmesg退出。

以上就是dmesg的主體實(shí)現(xiàn)。

第二種查看內(nèi)核日志的方式,是通過 cat /proc/kmsg 命令。

該命令和dmesg命令的實(shí)現(xiàn)機(jī)制基本類似,都是通過讀文件,只不過cat讀取的是/proc/kmsg文件,而dmesg讀取的是/dev/kmsg文件。

讀取這兩個(gè)文件最大的區(qū)別是,/dev/kmsg文件每次打開時(shí),內(nèi)核都會(huì)為其分配一個(gè)單獨(dú)的seq變量,而/proc/kmsg文件每次打開時(shí),用的都是同一個(gè)全局的靜態(tài)seq變量,叫做syslog_seq。

syslog_seq指向的也是下一條要讀取的內(nèi)核日志在ring buffer中的位置,但因?yàn)樗且粋€(gè)全局的靜態(tài)變量,當(dāng)有多個(gè)進(jìn)程要讀取/proc/kmsg文件時(shí),就會(huì)有一個(gè)比較嚴(yán)重的問題,即內(nèi)核日志會(huì)被這幾個(gè)進(jìn)程隨機(jī)搶占讀取,也就是說,每個(gè)進(jìn)程讀到的都是整個(gè)內(nèi)核日志的一部分,是不完整的,這也是dmesg命令默認(rèn)不使用/proc/kmsg文件的原因。

第三種查看內(nèi)核日志的方式,是通過klogctl函數(shù)。

該函數(shù)是glibc對(duì)syslog系統(tǒng)調(diào)用的一個(gè)簡(jiǎn)單封裝,其具體使用方式,可以參考全景圖中用戶態(tài)的藍(lán)色部分。

klogctl函數(shù)可以指定很多命令,在上圖的示例中,我們使用的是SYSLOG_ACTION_READ命令,以此來模擬 cat /proc/kmsg 行為。

其實(shí)在內(nèi)核層面,cat /proc/kmsg命令,使用的就是klogctl對(duì)應(yīng)的syslog系統(tǒng)調(diào)用的SYSLOG_ACTION_READ命令的處理邏輯,所以示例中的klogctl函數(shù)相關(guān)代碼,和 cat /proc/kmsg 命令其實(shí)是等價(jià)的。

也就是說,klogctl函數(shù)在內(nèi)核里使用的也是syslog_seq變量,它也有和/proc/kmsg文件同樣的問題。

其實(shí)還有一種方式可以查看內(nèi)核日志,就是通過系統(tǒng)控制臺(tái)。

但這種方式和前面講的三種方式都不一樣,它是完全被動(dòng)的,是內(nèi)核在調(diào)用printk函數(shù),將日志信息放到ring buffer后,再去通知系統(tǒng)控制臺(tái),告知其可以輸出這些日志。

系統(tǒng)控制臺(tái)也是通過一個(gè)console_seq變量,記錄下一條要輸出內(nèi)核日志的所在位置。

這里說的系統(tǒng)控制臺(tái),是指我們?cè)陂_機(jī)的時(shí)候,黑色屏幕輸出的那些內(nèi)容,但當(dāng)我們進(jìn)入圖形化界面后,我們就看不到系統(tǒng)控制臺(tái)的輸出了,除非我們?cè)儆?ctrl + alt + f1/f2/f3 等方式,切換成系統(tǒng)控制臺(tái)。

系統(tǒng)控制臺(tái)輸出的內(nèi)容,是被日志級(jí)別過濾過的,內(nèi)核默認(rèn)的日志過濾級(jí)別是7,即debug級(jí)別以上的日志,比如info / err 等,這些都會(huì)輸出,但debug級(jí)別不會(huì)輸出。

該日志過濾級(jí)別,可以通過很多方式改變,比如說,可以通過內(nèi)核參數(shù) loglevel,所以,如果發(fā)現(xiàn)系統(tǒng)控制臺(tái)沒有輸出想要的日志信息,先看下其是否被過濾掉了。

以上就是printk生態(tài)的完整實(shí)現(xiàn)。

了解printk函數(shù)的實(shí)現(xiàn),對(duì)于內(nèi)核開發(fā)者或研究者來說,意義非常大,但對(duì)于普通的應(yīng)用開發(fā)人員來說,又有什么幫助呢?

其實(shí),隨著技術(shù)的深入,我們不應(yīng)該再只關(guān)心應(yīng)用層面的行為,而且還要關(guān)心系統(tǒng)層面的行為,這樣我們才能更好的去定位問題,更好的去保證我們應(yīng)用的健康運(yùn)行。

比如,當(dāng)我們的應(yīng)用需要內(nèi)存時(shí),會(huì)向操作系統(tǒng)申請(qǐng),操作系統(tǒng)此時(shí)給我們的,其實(shí)是虛擬內(nèi)存,只有當(dāng)我們的進(jìn)程真正的在使用這些內(nèi)存時(shí),比如讀/寫,操作系統(tǒng)才會(huì)為其分配物理內(nèi)存。

但假設(shè)此時(shí)物理內(nèi)存沒有了,那操作系統(tǒng)會(huì)怎么辦?

對(duì)于linux內(nèi)核來說,它會(huì)選擇一個(gè)使用內(nèi)存最多的進(jìn)程,然后將其kill掉,以此來釋放內(nèi)存,保證后續(xù)的內(nèi)存分配操作能夠成功,這個(gè)我在之前文章 為什么我的進(jìn)程被kill掉了 有詳細(xì)講過。

對(duì)于內(nèi)核的這種行為,我們就應(yīng)該多加關(guān)注,而關(guān)注的方式,就是查看內(nèi)核日志。

比如,linux內(nèi)核在kill掉進(jìn)程時(shí),會(huì)用pr_err記錄一行日志:

如果我們發(fā)現(xiàn)一個(gè)進(jìn)程跑著跑著就沒有了,就可以通過dmesg命令,查看是否有這個(gè)日志,如果有,說明該進(jìn)程因?yàn)橄到y(tǒng)內(nèi)存不足,被操作系統(tǒng)kill掉了。

類似的,內(nèi)核里還有很多error級(jí)別,甚至更高級(jí)別的日志需要我們關(guān)注,通過這些日志,我們可以及時(shí)的發(fā)現(xiàn)系統(tǒng)的異常情況,必要時(shí)可以人工介入進(jìn)行干預(yù)。

總之,對(duì)系統(tǒng)了解的越深,內(nèi)核日志對(duì)我們的幫助就越大。

就這些,希望你喜歡。

本文轉(zhuǎn)載自微信公眾號(hào)「卯時(shí)卯刻」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系卯時(shí)卯刻公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 卯時(shí)卯刻
相關(guān)推薦

2021-09-29 09:50:41

Linux內(nèi)核日志

2017-10-12 10:06:23

Linux內(nèi)存free命令

2011-10-14 10:27:04

OpenFlow

2022-11-27 11:00:15

2021-07-29 20:29:36

Linux c 代碼Java

2014-04-10 15:42:08

Linux系統(tǒng)內(nèi)存

2021-02-25 09:50:01

LinuxWindows內(nèi)核

2013-10-28 09:40:51

Android內(nèi)核

2014-07-09 13:48:08

去IOE浪潮

2020-06-10 10:50:15

Linuxpstore內(nèi)核

2010-10-25 10:52:34

2010-05-20 09:09:07

Linux內(nèi)核

2013-11-25 14:07:11

Linux內(nèi)核內(nèi)核特性

2013-11-07 13:59:56

Linux內(nèi)核

2013-11-06 13:03:10

Linux內(nèi)核

2013-11-12 11:01:46

Linux內(nèi)核

2013-11-05 09:58:39

Linux內(nèi)核

2021-02-20 06:08:07

LinuxWindows內(nèi)核

2018-10-29 13:46:02

2021-11-17 10:25:28

loguru日志Python
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品伊人久久| 免费无码一区二区三区| 国产一区久久精品| 丁香天五香天堂综合| 97视频免费在线看| a天堂中文字幕| 日韩精品一区二区三区免费视频| 亚洲第一精品在线| 亚洲成人在线视频网站| 亚洲av无码乱码在线观看性色| 国产精品亚洲综合久久| 最近更新的2019中文字幕| 91久久嫩草影院一区二区| 久久亚洲国产成人精品性色| 麻豆久久久久| 亚洲一二三区视频在线观看| 日本一区二区在线视频| 国产普通话bbwbbwbbw| 国产农村妇女精品一二区| 日韩性xxxx爱| 中文字幕xxx| 欧美视频精品全部免费观看| 色欧美乱欧美15图片| 免费的av在线| 国产精品玖玖玖| 99精品99| 欧美黑人巨大精品一区二区| 国产福利在线导航| 西瓜成人精品人成网站| 日韩三级视频在线看| 午夜宅男在线视频| 91涩漫在线观看| 99久久精品99国产精品| 亚洲a成v人在线观看| 成人小视频在线播放| 最新日韩欧美| 色综合91久久精品中文字幕| 青青草自拍偷拍| 国产精品一在线观看| 精品va天堂亚洲国产| 日韩av影视大全| 中中文字幕av在线| 中文字幕乱码日本亚洲一区二区| 久久精品国产理论片免费| 亚洲av无码乱码国产麻豆| 久久国产精品一区二区| 国产精品久久久精品| 99久热在线精品996热是什么| 国产精品mm| 欧美大片第1页| 玖玖爱这里只有精品| 99久久精品网站| 日韩午夜在线影院| 日韩av一卡二卡三卡| 久久影视精品| 欧美日韩成人一区二区| 欧美成人福利在线观看| av在线播放一区| 欧美视频中文字幕| 红桃一区二区三区| 黄色小网站在线观看| 国产精品久99| 春色成人在线视频| 亚洲av综合色区无码一区爱av | 午夜精品久久久久久久96蜜桃| 午夜精品影院| 久久福利视频导航| 欧美日韩激情在线观看| 羞羞答答一区二区| 日韩激情视频在线播放| 白丝女仆被免费网站| 最新精品国偷自产在线| 亚洲天堂视频在线观看| 麻豆一区在线观看| 欧美久久影院| 91sa在线看| japanese国产在线观看| 精品一区二区三区免费播放| 91视频九色网站| 国产18精品乱码免费看| 99精品视频一区二区三区| 欧美不卡福利| 日本在线免费看| 一区二区三区.www| 国产欧美在线一区| 久久免费影院| 精品免费视频.| 黄色录像a级片| jlzzjlzz亚洲女人| 欧美精品亚州精品| 日本三级小视频| 久久国产精品无码网站| 国产精品我不卡| 国产黄在线看| 一区二区三区免费网站| 免费欧美一级视频| 免费成人黄色网| 精品欧美乱码久久久久久| 新91视频在线观看| av成人app永久免费| 日韩麻豆第一页| 情侣偷拍对白清晰饥渴难耐| 欧美午夜不卡| 国产97免费视| 国产激情久久久久久熟女老人av| 91免费国产视频网站| 一本久道久久综合狠狠爱亚洲精品| 天堂在线视频免费观看| 欧美激情一区在线观看| 国产精品久久国产| 99久久久国产精品免费调教网站| 日韩欧美卡一卡二| www.99热| 精品国产乱码久久久| 久久国产加勒比精品无码| 特级毛片www| 国产传媒久久文化传媒| 日韩欧美在线一区二区| 后进极品白嫩翘臀在线播放| 欧美自拍丝袜亚洲| 九热视频在线观看| 巨人精品**| 久久综合国产精品台湾中文娱乐网| 毛片视频网站在线观看| 国产伦精一区二区三区| 亚洲人久久久| 不卡一二三区| 亚洲福利视频免费观看| 国产av 一区二区三区| 美女脱光内衣内裤视频久久网站 | 亚洲天堂a在线| 亚洲欧洲日韩综合二区| 深夜在线视频| 精品国产凹凸成av人网站| 亚洲色偷偷综合亚洲av伊人| 日韩精品五月天| 激情小说综合网| 九色91在线| 精品国产一区二区三区忘忧草 | 日韩Av无码精品| 午夜精品亚洲| 91传媒视频免费| 麻豆网站视频在线观看| 91成人看片片| 精品久久久久久中文字幕人妻最新| 国产一区日韩欧美| 91在线观看免费高清| 黄色免费在线观看| 欧美精品xxxxbbbb| 2017亚洲天堂| 久久av资源网| 伊人久久大香线蕉成人综合网| 国产精品久久久久久妇女| 国产一区二区av| 中日韩在线观看视频| 欧美国产成人精品| 午夜精品中文字幕| 国产精品毛片一区二区在线看| 成人国产精品久久久久久亚洲| 91xxx在线观看| 在线成人高清不卡| 欧美成人综合色| 校园激情久久| 日韩精品在在线一区二区中文 | 99电影在线观看| 国产探花视频在线观看| 欧美精品一区二区久久久| 精品在线视频观看| 91免费观看国产| 久久婷婷国产91天堂综合精品| 成人毛片在线| 欧美黑人性视频| 天天舔天天干天天操| 色综合婷婷久久| 男女男精品视频网站| 国产一区二区0| 妺妺窝人体色777777| 全球av集中精品导航福利| 国产成人福利网站| 欧美一级做性受免费大片免费| 亚洲成人av资源| 中国黄色a级片| 毛片av一区二区| 屁屁影院ccyy国产第一页| 日本在线中文字幕一区| 国产精品久久久久久久久久三级 | 凹凸av导航大全精品| 欧美孕妇与黑人孕交| av影片免费在线观看| 欧美一区二区三区色| 中文字幕免费视频| 国产综合久久久久影院| 国产精品久久中文字幕| 欧美欧美黄在线二区| 91久久久久久久久| 蜜桃av在线| 日韩视频第一页| 特黄视频在线观看| 欧美精品v日韩精品v韩国精品v| 国产中文字幕免费| 国产精品进线69影院| 国产伦精品一区二区三区精品| 肉色丝袜一区二区| 4444亚洲人成无码网在线观看| 国产影视一区| 国产精品免费一区二区三区| 国产精品伦一区二区| 97精品视频在线| 国产成人高清精品| 亚洲丝袜一区在线| 四季av日韩精品一区| 3d成人h动漫网站入口| 日日噜噜噜噜人人爽亚洲精品| 亚洲欧美一区二区三区极速播放| 国产男女猛烈无遮挡a片漫画 | 中文字幕在线播放视频| 久久国产三级精品| 激情婷婷综合网| 亚洲国产婷婷| 国产又粗又长又爽视频| 日韩av密桃| 欧美高清一区二区| 岛国成人av| 亚洲淫片在线视频| 欧美爱爱视频| 国产精品成人免费电影| 精品众筹模特私拍视频| 久久黄色av网站| lutube成人福利在线观看| 日韩av在线电影网| 狠狠躁日日躁夜夜躁av| 欧美一二三四在线| 91av久久久| 欧美色国产精品| 国产又粗又猛又爽又| 精品成人国产在线观看男人呻吟| 青娱乐在线视频免费观看| ㊣最新国产の精品bt伙计久久| 免费视频91蜜桃| 久久久久久久性| 国产嫩草在线观看| 日韩国产精品久久久| 国内外成人激情视频| 亚洲精品精选| 999在线观看视频| 亚洲美女色禁图| 免费国产黄色网址| 欧美亚洲三级| 成年人小视频网站| 在线一区免费| 中文字幕在线乱| 午夜精品免费| 国产黄色片免费在线观看| 在线日韩av| 国产aaa一级片| 国产精品亚洲欧美| www黄色在线| 蜜臀99久久精品久久久久久软件| 亚洲视频在线a| 蜜臀精品久久久久久蜜臀| 色综合色综合色综合色综合| 另类成人小视频在线| 天堂av手机在线| 丰满白嫩尤物一区二区| 自拍视频一区二区| 国产网红主播福利一区二区| 国产视频123区| 亚洲欧美日韩一区| 国产精彩视频在线观看| 午夜精品久久久久久| 丰满少妇xoxoxo视频| 欧美性一区二区| 国产精品丝袜黑色高跟鞋| 欧美成人精品二区三区99精品| 刘亦菲毛片一区二区三区| 亚洲乱亚洲乱妇无码| 精品人妻一区二区三区麻豆91 | 狠狠躁夜夜躁久久躁别揉| 看片网址国产福利av中文字幕| 色婷婷久久久亚洲一区二区三区| 中文字幕人妻精品一区| 日韩欧美专区在线| 欧洲成人av| 久久精品电影网站| free性护士videos欧美| 国产精品久久久久久久久久小说| 亚洲日本中文| 精品999在线观看| 色综合久久一区二区三区| 成人在线免费观看视频网站| 亚洲影院一区| 在线视频观看一区二区| 久久综合久久鬼色中文字| 国产免费美女视频| 欧美日韩亚洲视频| www.97超碰| 中文字幕欧美日韩在线| 678在线观看视频| 国产日本欧美一区二区三区| 久久久久97| 一区二区三区四区| 亚洲欧美卡通另类91av| 激情五月婷婷基地| 2021中文字幕一区亚洲| 91九色丨porny丨极品女神| 欧美日韩在线视频一区| 国产女人18毛片18精品| 亚洲日本中文字幕免费在线不卡| av大大超碰在线| 国产精品老女人视频| 久久草在线视频| 中文字幕一区综合| 免费在线日韩av| 大尺度做爰床戏呻吟舒畅| 国产精品456| 国产毛片欧美毛片久久久| 亚洲高清三级视频| 国产免费久久久| 国产亚洲免费的视频看| 国产在线88av| 99久久无色码| 亚洲欧美一区在线| 亚洲激情在线看| 欧美极品美女视频| 天堂网中文字幕| 亚洲国产美女精品久久久久∴| 日本黄色一区二区三区| www.午夜精品| www.成人在线视频| 欧美亚洲国产免费| 国产亚洲亚洲| 99re久久精品国产| 亚洲一区二区三区四区五区中文| 国产乱色精品成人免费视频| 在线视频欧美性高潮| av高清一区| 日本一区不卡| 日日夜夜免费精品视频| 我和岳m愉情xxxⅹ视频| 福利二区91精品bt7086| 理论片中文字幕| 欧美激情视频免费观看| 成人h动漫免费观看网站| 2021国产视频| 国产精品亚洲午夜一区二区三区 | 欧美一区二区三区另类| 日韩va在线观看| 亚洲人123区| 亚洲av无码一区二区三区dv| 欧美理论片在线观看| 精品国产乱码久久久久久樱花| 在线免费观看成人网| 久久99久久99| 91精品国产闺蜜国产在线闺蜜| 欧美亚洲国产一区二区三区va| 成年人在线观看网站| 国产精自产拍久久久久久蜜| 久久精品av| www.成年人| 一区二区三区高清| 天天操天天操天天| 日本国产一区二区三区| 成人vr资源| 永久av免费在线观看| 亚洲自拍与偷拍| 手机亚洲第一页| 国产精品高清在线| 日韩一区电影| 久久久久99人妻一区二区三区| 久久久久久久久久久黄色| jizz国产在线观看| 色先锋资源久久综合5566| 91麻豆精品一二三区在线| 欧美中日韩在线| 久久亚洲综合av| 亚洲在线观看av| 欧美激情女人20p| 国产精品一区二区av交换| 欧美视频国产视频| 午夜久久电影网| 北条麻妃在线| 99精品国产高清一区二区| 国产精品日韩久久久| 丁香花五月婷婷| 欧美一级日韩不卡播放免费| 国产传媒在线观看| 一级二级三级欧美| 高清不卡一区二区| www.av88| 亚洲人在线视频| 国内精品视频| 亚洲乱码一区二区三区| 国产精品一区二区三区四区| 中文字幕亚洲精品在线| 中文字幕国内精品| av自拍一区| 国产原创精品在线| 精品久久久久久久久久国产| 色的视频在线免费看| 精品国产免费一区二区三区|