色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

借助Linux內(nèi)核文件操作監(jiān)控機(jī)制inotify協(xié)助定位

麥辣雞腿堡 ? 來源:嵌入式軟件那些事 ? 作者:靜以修身 ? 2023-11-01 14:58 ? 次閱讀

嵌入式Linux系統(tǒng)在運(yùn)行時,除了小概率的因突然斷電等非正常關(guān)機(jī)造成的文件系統(tǒng)損壞之外,更大概率的是因為應(yīng)用程序編程不當(dāng),造成對Nandflash的頻繁擦寫,行業(yè)術(shù)語稱之為 過度編程(Over Program ,逼近Nandflash約十萬次的擦寫壽命,表現(xiàn)為Nandflash的某些塊/頁陸續(xù)出現(xiàn)位反轉(zhuǎn)(bit flip,所謂位反轉(zhuǎn),指的是原先Nandflash中存儲的某個數(shù)據(jù)位變化了,即要么從1變成了0,要么從0變成了1)的現(xiàn)象,少量的位反轉(zhuǎn)是可以靠硬件/軟件ECC(Error Checking and Correction,錯誤檢查和糾正)算法自糾過來的,但大量的位反轉(zhuǎn)超出ECC的糾正能力之后,會導(dǎo)致文件系統(tǒng)數(shù)據(jù)損壞,嚴(yán)重時會導(dǎo)致系統(tǒng)崩潰,終端運(yùn)行不起來。

圖片

對于大規(guī)模量產(chǎn)的終端設(shè)備而言,這種問題一旦發(fā)生,往往不是升級下應(yīng)用程序就能解決的,因為底層存儲器件的壽命已到,必需要更換硬件才行,這會給公司帶來大量的人力、物力及財力消耗,公司產(chǎn)品口碑也會受到影響,后果是非常嚴(yán)重的。

然而現(xiàn)實(shí)中,采用嵌入式Linux系統(tǒng)的應(yīng)用程序,其代碼規(guī)模一般都不會很小,少則幾萬十幾萬行,多則幾十上百萬行,想要快速找到應(yīng)用程序中對文件寫操作比較頻繁的地方,猶如大海撈針。這種情況下,尋找一種快速有效的方法,協(xié)助我們研發(fā)人員快速定位問題所在,將有問題的應(yīng)用程序在家里提前暴露出來,不要流到現(xiàn)場等著問題去爆發(fā),就顯得尤為重要。

Linux內(nèi)核從2.6.13版本起,加入了inotify特性,這是一種文件系統(tǒng)的變化通知機(jī)制,通過inotify可以監(jiān)控文件系統(tǒng)中添加、刪除、修改,移動等各種文件操作,當(dāng)事件發(fā)生時可及時發(fā)出相關(guān)的事件警告。利用這個內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況。

具體實(shí)施方式

以嵌入式Linux系統(tǒng)常用的ubi文件系統(tǒng)為例,具體步驟如下:

步驟1: 觀察內(nèi)核啟動時掛載ubi文件系統(tǒng)時的打印信息,或者在系統(tǒng)正常運(yùn)行過程中隨時輸入ubinfo命令,查看目前文件系統(tǒng)對Nandflash閃存的最大擦寫次數(shù)。

ubinfo -d 0

ubi0

Volumes count: 1

Logical eraseblock size: 126976 bytes, 124.0 KiB

Total amount of logical eraseblocks: 400 (50790400 bytes, 48.4 MiB)

Amount of available logical eraseblocks: 0 (0 bytes)

Maximum count of volumes 128

Count of bad physical eraseblocks: 0

Count of reserved physical eraseblocks: 8

Current maximum erase counter value: 36864

Minimum input/output unit size: 2048 bytes

Character device major/minor: 251:0

Present volumes: 0

步驟2: 正常如果應(yīng)用程序沒有過度編程的話,上面顯示的最大擦寫次數(shù)(Current maximum erase counter value)一般不會很大,如果看到這種幾萬次的擦寫次數(shù),或者短時間內(nèi)這個最大擦寫次數(shù)增長比較快,說明應(yīng)用程序中應(yīng)該有過度編程的情況,這時我們可以借助Linux系統(tǒng)中的文件操作監(jiān)控工具inotify協(xié)助定位。

步驟3: 在inotify的站點(diǎn)下載inotify-tools監(jiān)控工具源代碼,這里以版本inotify-tools-3.13.tar.gz為例。

步驟4: 由于嵌入式Linux系統(tǒng)一般運(yùn)行在ARM平臺上,需要將上面下載的源代碼進(jìn)行交叉編譯(cross-compiling,所謂交叉編譯,就是在一種平臺上編譯,編譯出來的程序,放到別的平臺上運(yùn)行,即編譯環(huán)境和運(yùn)行環(huán)境不一樣,這個概念主要和嵌入式開發(fā)有關(guān),一般是在x86平臺上編譯,在ARM平臺上運(yùn)行),生成inotifywait、inotifywatch可執(zhí)行程序及運(yùn)行時需要的庫文件。

make CC=arm-none-linux-gnueabi-gcc

步驟5: 將交叉編譯后生成的inotifywait、inotifywatch可執(zhí)行程序上傳到嵌入式Linux設(shè)備的/sbin目錄下,并修改可執(zhí)行權(quán)限。

chmod 755 inotifywait
chmod 755 inotifywatch

步驟6: 將交叉編譯后生成的庫文件libinotifytools.so.0.4.1上傳到嵌入式Linux設(shè)備的/lib目錄下,并在/lib目錄下建立符號鏈接。

ln -s libinotifytools.so.0.4.1 libinotifytools.so.0

步驟7: 執(zhí)行如下命令即可啟動對文件操作的監(jiān)聽。

inotifywait -mrq --timefmt '%y/%m/%d %H:%M' --format '%T %w %f %e' -e modify,delete,create,attrib --exclude 'ptmx|pts|ttyS*' /

其中:

--timefmt選項用于控制打印出來的時間格式,這里采用了“年/月/日 時:分”的格式。

--exclude選項用于剔除過濾不需要監(jiān)控的文件名稱,支持通配符*過濾。

-e選項用于注冊要監(jiān)聽的文件操作事件。

步驟8: 這時應(yīng)該就可以看到inotify打印的監(jiān)聽到的文件操作,根據(jù)打印信息再到代碼里面去搜索對應(yīng)的文件操作,便可以很容易定位。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5089

    文章

    19170

    瀏覽量

    306801
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1381

    瀏覽量

    40364
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11336

    瀏覽量

    210100
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3794

    瀏覽量

    81281
收藏 人收藏

    評論

    相關(guān)推薦

    Linux內(nèi)核的作用

    Linux操作系統(tǒng)是當(dāng)今世界上最為廣泛使用的開源操作系統(tǒng)之一,內(nèi)核則是一個操作系統(tǒng)的核心和靈魂所在。對于一名
    發(fā)表于 07-06 11:46 ?1842次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>的作用

    關(guān)于Inotifylinux文件系統(tǒng)的監(jiān)控

    Linux提供了hotplup(熱插拔),udev和inotify機(jī)制幫助我們可以看到底層硬件設(shè)備發(fā)生了什么,從而能夠更好地管理設(shè)備,給用戶提供更好地服務(wù)。Inotify通過如下三個系
    發(fā)表于 10-19 16:01

    linux中的inotify機(jī)制的一點(diǎn)認(rèn)識

    Linux中一切皆文件,在應(yīng)用程序中,有時候我們需要對文件系統(tǒng)的目錄或者文件進(jìn)行監(jiān)控,以便于我們能根據(jù)
    發(fā)表于 11-29 17:00

    Linux inotify基本用法

    Linux inotify監(jiān)聽文件狀態(tài)
    發(fā)表于 07-02 14:47

    linuxinotify機(jī)制

    linux下開發(fā)過程中,用戶態(tài)需要內(nèi)核提供一些機(jī)制,以便用戶態(tài)能夠及時地得知內(nèi)核或底層硬件設(shè)備發(fā)生了什么,從而能夠更好地管理設(shè)備,給用戶提供更好的服務(wù),如 hotplug、udev
    發(fā)表于 07-22 08:05

    linux內(nèi)核rcu機(jī)制詳解

    Linux內(nèi)核源碼當(dāng)中,關(guān)于RCU的文檔比較齊全,你可以在 /Documentation/RCU/ 目錄下找到這些文件。Paul E. McKenney 是內(nèi)核中RCU源碼的主要實(shí)現(xiàn)者
    發(fā)表于 11-13 16:47 ?8801次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核</b>rcu<b class='flag-5'>機(jī)制</b>詳解

    linux內(nèi)核oom機(jī)制分析

    Linux 內(nèi)核有個機(jī)制叫OOM killer(Out-Of-Memory killer),該機(jī)制監(jiān)控那些占用內(nèi)存過大,尤其是瞬間很快消耗
    發(fā)表于 11-13 17:01 ?1352次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核</b>oom<b class='flag-5'>機(jī)制</b>分析

    linux內(nèi)核機(jī)制有哪些

     在操作系統(tǒng)引入了進(jìn)程概念,進(jìn)程成為調(diào)度實(shí)體后,系統(tǒng)就具備了并發(fā)執(zhí)行多個進(jìn)程的能力,但也導(dǎo)致了系統(tǒng)中各個進(jìn)程之間的資源競爭和共享。另外,由于中斷、異常機(jī)制的引入,以及內(nèi)核態(tài)搶占都導(dǎo)致了這些內(nèi)核
    發(fā)表于 11-14 15:25 ?5581次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>機(jī)制</b>有哪些

    inotify框架的使用和原理!如何添加對于目標(biāo)文件的watch呢?

    為了防止文件描述符fd的快速消耗,inotify提出了一個inotify instance(inotify實(shí)例)的概念。每一個inotify
    的頭像 發(fā)表于 08-15 17:43 ?1.2w次閱讀
    <b class='flag-5'>inotify</b>框架的使用和原理!如何添加對于目標(biāo)<b class='flag-5'>文件</b>的watch呢?

    需要了解的Linux inotify功能及實(shí)現(xiàn)原理

    眾所周知,Linux 桌面系統(tǒng)與 MAC 或 Windows 相比有許多不如人意的地方,為了改善這種狀況,開源社區(qū)提出用戶態(tài)需要內(nèi)核提供一些機(jī)制,以便用戶態(tài)能夠及時地得知內(nèi)核或底層硬件
    發(fā)表于 05-13 09:47 ?487次閱讀

    可以了解并學(xué)習(xí)Linux 內(nèi)核的同步機(jī)制

    Linux內(nèi)核同步機(jī)制,挺復(fù)雜的一個東西,常用的有自旋鎖,信號量,互斥體,原子操作,順序鎖,RCU,內(nèi)存屏障等。
    發(fā)表于 05-14 14:10 ?714次閱讀

    Linux 內(nèi)核文件 Cache 管理機(jī)制介紹

    的問題了。下面我們介紹一下 Linux 內(nèi)核文件 Cache 管理的機(jī)制。本文以 2.6 系列內(nèi)核為基準(zhǔn),主要講述工作原理、數(shù)據(jù)結(jié)構(gòu)和算法
    發(fā)表于 04-02 14:38 ?469次閱讀

    Linux內(nèi)核文件Cache機(jī)制

    Linux內(nèi)核文件Cache機(jī)制(開關(guān)電源技術(shù)與設(shè)計 第二版)-Linux內(nèi)核
    發(fā)表于 08-31 16:34 ?4次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>文件</b>Cache<b class='flag-5'>機(jī)制</b>

    深入剖析Linux內(nèi)核虛擬文件系統(tǒng)

    虛擬文件系統(tǒng)(Virtual File System,簡稱VFS)是Linux內(nèi)核的子系統(tǒng)之一,它為用戶程序提供文件文件系統(tǒng)
    的頭像 發(fā)表于 05-14 15:53 ?3116次閱讀
    深入剖析<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>虛擬<b class='flag-5'>文件</b>系統(tǒng)

    詳解linux內(nèi)核的uevent機(jī)制

    linux內(nèi)核中,uevent機(jī)制是一種內(nèi)核和用戶空間通信的機(jī)制,用于通知用戶空間應(yīng)用程序各種硬件更改或其他事件,比如插入或移除硬件設(shè)備(
    的頭像 發(fā)表于 09-29 17:01 ?889次閱讀
    主站蜘蛛池模板: 国产激情视频在线播放| 亚洲色偷偷偷网站色偷一区人人藻| 绝逼会被锁| 日本久久精品毛片一区随边看| 小小水蜜桃视频高清在线观看免费| 又粗又大又爽又黄的免费视频 | 里番acg纲手的熟蜜姬训练场 | 久久999视频| 一二三四在线视频社区8| 99久久精品国产自免费| 国产在线AV一区二区香蕉| 秋霞电影在线观看午夜伦| 亚洲一区国产| 大地影院免费观看视频| 旧里番ovaの催○セイ活指导| 性色爽爱性色爽爱网站| z0000性欧美| 男人J进入女人P免费狂躁| 亚洲中文热码在线视频| 国产精品久久久久无码AV色戒| 欧美亚洲国产手机在线有码 | 欧美精品亚洲精品日韩专区一| 理论片87福利理论电影| 亚洲AV久久无码精品九号软件| 成年视频国产免费观看| 国产极品白嫩超清在线观看| 嗯啊…跟校草在教室里做h| 在线视频 国产 日韩 欧美| 99久久国产综合精品国| 久久99热狠狠色AV蜜臀| 亚洲国产欧美在线看片| 国产精品一久久香蕉国产线看| 日本漫画大全无翼乌| 99在线观看精品| 男女啪啪久久精品亚洲A| 在线国产三级| 久久精品国产免费| 亚洲精品久久久992KVTV| 国产亚洲精品网站在线视频| 我的好妈妈BD免费观看| 国产精品亚洲AV毛片一区二区三区 |