国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Linux Udev

macg0406 / 898人閱讀

摘要:比如盤插入,電腦是如何即時(shí)的做出響應(yīng)耳機(jī)插入又是如何做到自動(dòng)關(guān)閉外部音量這些都跟有關(guān)。雖然很強(qiáng)大,功能很多,本來就針對硬盤設(shè)備的插拔做一些經(jīng)驗(yàn)的分享。

在我入門udev的時(shí)候,看著各種各樣的資料覺得這個(gè)東西很高深的時(shí)候,突然瞄到一篇文章里面說道: 要樹立一個(gè)信念:udev很簡單,當(dāng)時(shí)不以為然,現(xiàn)在能夠理解,其實(shí)稍作研究就能理解了,看起來很高端很遙遠(yuǎn)的Title,比如Linux Kernel,比如軟硬件交互,比如熱插拔等等,其實(shí)掌握幾個(gè)rules,然后再動(dòng)手實(shí)踐實(shí)踐,對比著講解,就能知道七七八八了,想要再深入,就多看看文檔實(shí)現(xiàn)和內(nèi)核源碼,其實(shí)很多東西都是這樣,了解了就很簡單,沒事了解一點(diǎn)就比別人多知道一些,共勉

Udev 是什么

udevlinux kernel的設(shè)備管理器,處理硬件的添加和刪除,但它的功能遠(yuǎn)遠(yuǎn)不僅于此。比如U盤插入,電腦是如何即時(shí)的做出響應(yīng)?耳機(jī)插入又是如何做到自動(dòng)關(guān)閉外部音量?這些都跟udev有關(guān)。雖然udev很強(qiáng)大,功能很多,本來就針對SCSI硬盤設(shè)備的插拔做一些經(jīng)驗(yàn)的分享。至于為什么我會(huì)研究到這個(gè)東西,是因?yàn)樽罱谧?b>ceph相關(guān)的項(xiàng)目,需要實(shí)現(xiàn)一個(gè)類似熱插拔的feature,懂的人應(yīng)該很清楚,就是拔插硬盤后,osd自動(dòng)恢復(fù),主要應(yīng)用于硬盤壽命即將到期,替換新盤的場景,不明白的同學(xué)也不要緊,因?yàn)楸疚闹饕懻摰氖?b>udev

Udev Rules

udev管理各種各樣的設(shè)備,比如USB,DISK,CD等等,為了區(qū)別設(shè)備類型,精確匹配,udev制定了一套特色的rules,為什么說特色呢?因?yàn)槲矣X得它用最簡潔的語法滿足了方方面面的需求

這里推薦一些有用的link

UDEV Primer udev入門必讀,可以快速將udev了解一番

Writing udev rules 經(jīng)典文章,看完這個(gè)基本就能掌握udev rules

Writing udev rules 修訂版 國內(nèi)論壇對格式樣式做了一些修改,有潔癖的可以看看

Writing udev rules 譯 翻譯版本,英文不好的可以中英文對比著看

udev 中文手冊 這位金步國先生為開源事業(yè)做出了杰出的貢獻(xiàn),早前就看過他翻譯的Apache的手冊

Writing udev rules and kernel examples 看夠了上面各種規(guī)則,來看看具體的例子吧

Udev 詳解 文章如名,真的很詳細(xì)

Udev 使用方法 一些特殊的技巧

大家看完上面的文章應(yīng)該知道rules文件的位置和規(guī)則,下面我貼一些我實(shí)踐中的代碼和例子

這是兩條分別針對SCSI硬盤設(shè)備的添加和刪除的rules,設(shè)備事件分別會(huì)觸發(fā)相應(yīng)的腳本:

KERNEL=="sd[a-z]", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/test.py %k add"
KERNEL=="sd[a-z]", ACTION=="remove", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/test.py %k remove"

注意:

執(zhí)行外部命令必須加上環(huán)境變量路徑, 上面的這個(gè)也可以不加/usr/bin/python,但是必須在py腳本頭部加上shebang#! /usr/bin/python

RUN可以運(yùn)行程序外的程序,而PROGRAM不是做這個(gè)事情的,而是為了生成之后需要的變量

相關(guān) Link

hashtag and shebang

shebang

Udevadm

udevadm是一個(gè)udev的管理工具,可以用來獲取設(shè)備信息(info),監(jiān)視和控制udev運(yùn)行時(shí)的行為(control),請求內(nèi)核事件(trigger),管理事件隊(duì)列(settle),以及提供簡單的調(diào)試機(jī)制(test)。很實(shí)用,很好用!!!

推薦 Link

udevadm 中文手冊 很全,很基礎(chǔ) ~~

udevadm command examples 很多udevadm的命令可以借鑒,說不定以后可以用到呢?

介紹幾個(gè)我具體使用過的例子:

udevadm info

可以從udev數(shù)據(jù)庫中提取設(shè)備信息,此外,還可以從sysfs中提取設(shè)備的屬性, 以幫助創(chuàng)建與此設(shè)備匹配的udev規(guī)則

獲取/dev/sdbpath信息

udevadm info -q path -n /dev/sdb
udevadm test

模擬向udev發(fā)送設(shè)備信息,并不會(huì)真的觸發(fā),而是將觸發(fā)后的過程信息打印出來,對調(diào)試很有幫助, 我用這個(gè)查看腳本是否會(huì)被執(zhí)行

udevadm test --action="add" `udevadm info -q path -n /dev/sdb`

注意: test不會(huì)真正觸發(fā)事件,而trigger可以

udevadm trigger

可以真正觸發(fā)udev事件,但是不會(huì)真正改變硬件,只是觸發(fā)kerneludev的事件,會(huì)觸發(fā)udev rules,我用這個(gè)觸發(fā)事件,校驗(yàn)rules匹配

udevadm trigger -v --action=add --sysname-match=sda

注意:

不加sysname-match那么會(huì)觸發(fā)所有設(shè)備,如果是action=remove,那么則會(huì)移除很多設(shè)備,甚至導(dǎo)致sshd服務(wù)停掉

后面是sda而不是/dev/sda因?yàn)樗歉鶕?jù)pci路徑來定位name的,比如sda的路徑是:

/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda
udevadm control

重載udev rules,對之后觸發(fā)的新設(shè)備有效,對之前已經(jīng)觸發(fā)的無效

udevadm control --relaod-rules

更改udev日志等級為infoudev默認(rèn)等級為err,可以在/etc/udev/udev.conf中查看,日志具體信息可以在syslog中查看

udevadm control --log-priority=info
More about udev

udev還有很多有意思的地方,如果想要更加深入的學(xué)習(xí),那么除了熟練地掌握rules等技巧,還要對其實(shí)現(xiàn)原理有了解,這就得多看文檔,多看源碼了,建議大家有條件的情況下多看源碼,多看原始的東西,因?yàn)榻?jīng)過別人的總結(jié)就可能會(huì)變味,相互對比,不要一味依賴別人總結(jié)的產(chǎn)物

Linux 自動(dòng)掛載usb設(shè)備 小例子 如何在usb設(shè)備插入后自動(dòng)掛載?

udev使用筆記 這篇文章里面那張圖片不錯(cuò)

寫個(gè)程序檢測我們的設(shè)備插拔 模仿內(nèi)核源碼簡單地實(shí)現(xiàn)一個(gè)設(shè)備插拔的檢測

linux下熱插拔事件的產(chǎn)生是怎樣通知到用戶空間 事件傳遞過程,udev源碼解析

熱插拔的工作原理 hotplug機(jī)制和udev udev原理講解

Uevent 上報(bào)event事件給上層的詳細(xì)講解 uevent源碼講解

linux內(nèi)核空間和用戶空間的是怎樣區(qū)別的,如何交互,如何從用戶空間進(jìn)入內(nèi)核空間 內(nèi)核空間和用戶空間的一些剖析

Netlink實(shí)現(xiàn)熱拔插監(jiān)控 消息傳輸用的是什么?Netlink是如何做到的

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40806.html

相關(guān)文章

  • Linux驅(qū)動(dòng)實(shí)踐:你知道【字符設(shè)備驅(qū)動(dòng)程序】的兩種寫法嗎?

    摘要:我們就繼續(xù)以此為基礎(chǔ),用保姆級的粒度一步一步操作,來討論一下字符設(shè)備驅(qū)動(dòng)程序的編寫方法。如何使用新的函數(shù)來編寫字符設(shè)備驅(qū)動(dòng)程序,下一篇文章再詳細(xì)討論。 作 者:道哥,10+年嵌入式開發(fā)老兵,專注于:C/C++、嵌入式、Linux。 關(guān)注下方公眾號,回復(fù)【書籍】,獲取 Linux、嵌入式領(lǐng)域經(jīng)典書籍;回復(fù)【PDF】,獲取所有原創(chuàng)文章( PDF 格式)。 目錄 ...

    Godtoy 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<