dmesg列印資訊如何後台儲存到檔案中

2021-06-18 22:40:42 字數 2039 閱讀 3777

dmesg除錯i資訊常常作為判斷系統異常退出的重要資訊,但是當個系統異常退出或重啟時,資訊又難以儲存下來,於是才有了將dmesg除錯資訊儲存到檔案中的想法:

[cpp]view plain

copy

#include 

#include 

#include 

#include 

#include 

//#include //核心編譯的配置資訊

#include 

#include 

//#define __log_buf_len   (1 << config_log_buf_shift)//在2.6.28核心中為預設1<<17,這才是真正dmesg buffer的大小,網上其他都扯淡。

#define __log_buf_len   (1 << 17)//在2.6.28核心中為預設1<<17,這才是真正dmesg buffer的大小,網上其他都扯淡。

#define __log_path      "/home/default/dmesg.log"

#define log_sleep(x)    (sleep(x))

#define __log_size      10485760//大於10m時刪除檔案

#define buf_size        256

long

check_log_size(

void

)    

return

(long

)f_stat.st_size;  

}  int

main(

intargc, 

char

*argv)  

;  char

tmpbuf[buf_size]=;  

intret = 0;  

file

*fp =null;  

struct

tm*ptr;  

time_t

lt;  

//daemon(0,0);//進入守護模式

while

(1)  

ret = klogctl(4,buf,__log_buf_len);//獲得dmesg資訊,該函式需要超級使用者許可權執行

if(0 >= ret)  

lt = time(null);//獲得時間

ptr = (struct

tm*)localtime(<);  

sprintf(tmpbuf,"       [log time:]       %s"

,asctime(ptr));

//記錄時間

printf("tmpbuf = %s\n"

,tmpbuf);  

fwrite(tmpbuf,strlen(tmpbuf),1,fp);  

fwrite(buf,strlen(buf),1,fp);  

fflush(fp);  

fclose(fp);  

if(__log_size < check_log_size())  

memset(tmpbuf,0,buf_size);  

memset(buf,0,__log_buf_len);  

}  return

0;  

}  

以下是makefil

[cpp]view plain

copy

cc := arm-none-linux-gnueabi-gcc  

all:dmesg_test  

dmesg_test:dmesg_test.c  

$(cc) dmesg_test.c -o dmesg_test -wall  

install:  

cp dmesg_test /nfsroot/update  

clean:  

rm dmesg_test  

執行:dmesg_test &

程式就進入後台執行了,每隔120秒會讀取一次dmesg資訊。

儲存終端列印資訊

先要說明為什麼要記錄終端會話,因為常會遇到這樣的情況,終端是有快取大小限制的,當在終端列印的訊息超出快取範圍,它前面的列印訊息就自動丟失了,這對於我們除錯程式會造成障礙,所以有記錄完整終端列印訊息的必要!1使用script記錄linux終端會話 script是大多數linux產品util linux...

定時列印資訊

class cl time event definition.public section.class methods auto exe for event finished of cl gui timer importing sender.endclass.cl time event defini...

在dmesg中列印 dmesg顯示開機資訊命令詳解

dmesg 顯示開機資訊 kernel會將開機資訊儲存在ring buffer中,如果開機時來不及看,可以利用dmeg檢視。路徑 var log dmesg 常用引數 c 顯示資訊後,清楚ring buffer中內容 s 預設值是8196,剛好等於ring buffer大小 n 設定記錄資訊的層級 ...