溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

UDEV規(guī)則的匹配鍵及RAW是什么

發(fā)布時(shí)間:2021-11-05 10:39:29 來(lái)源:億速云 閱讀:254 作者:柒染 欄目:建站服務(wù)器

UDEV規(guī)則的匹配鍵及RAW是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

udevadm命令可以看到具體信息udevadm info --attribute-walk --name=/dev/sda

UDEV涉及的一些常見目錄信息
ll /sys/class/block/
ll /dev/raw
ll /dev/mapper
ll /dev/block
ll /dev/disk/by-path
ll /dev/disk/by-id
ll /dev/disk/by-uuid


UDEV規(guī)則的匹配字段屬性
ACTION        匹配事件的動(dòng)作名,例如:add( 添加設(shè)備 )、remove( 刪除設(shè)備 )。
DEVPATH       匹配事件的設(shè)備相對(duì)路徑。例如:sda的devpath是/dev/sda,sda2的devpath是/dev/sda2。
KERNEL        匹配事件的設(shè)備名字,比如sdb,比如sd*表示任意SCSI磁盤設(shè)備
NAME          匹配網(wǎng)絡(luò)接口或者設(shè)備節(jié)點(diǎn)的名字。NAME只有在前面的規(guī)則賦值之后才可以使用。
SYMLINK       匹配設(shè)備節(jié)點(diǎn)符號(hào)鏈的名字。SYMLINK 只有在前面的規(guī)則賦值之后才可以使用。可以有多個(gè) symlinks,只需要匹配一個(gè)。
SUBSYSTEM     匹配設(shè)備子系統(tǒng)
DRIVER        匹配設(shè)備在devpath里的設(shè)備驅(qū)動(dòng)名稱,例如:ide-cdrom。
BUS           設(shè)備在devpath 里的總線名稱,例如:usb。
ID            設(shè)備在 devpath 里的識(shí)別號(hào)
ENV{key}      環(huán)境變量。ENV{MAJOR}=="8"和ENV{MINOR}=="1"表示sda1
PROGRAM       執(zhí)行一個(gè)程序。如果程序成功返回, key 為 true。設(shè)備的屬性被放在被執(zhí)行進(jìn)程的環(huán)境變量中,該程序的輸出為 stdout, 可以從 RESULT 這個(gè) key 讀取。
RESULT        匹配最近一次 PROGRAM 調(diào)用的返回字符串。它應(yīng)該在 PROGRAM 之后使用。
OWNER         匹配設(shè)備文件的屬組
GROUP         匹配設(shè)備文件所在的組。
MODE          匹配設(shè)備文件的權(quán)限,采用8進(jìn)制
MAJOR         表示磁盤號(hào)
MINOR         表示磁盤下面的分區(qū)號(hào)


UDEV規(guī)則匹配字段屬性和可調(diào)用的替換操作符 
$kernel, %k:設(shè)備的內(nèi)核設(shè)備名稱,例如:sda、cdrom。
$number, %n:設(shè)備的內(nèi)核號(hào)碼,例如:sda3 的內(nèi)核號(hào)碼是 3。
$devpath, %p:設(shè)備的 devpath路徑。
$id, %b:設(shè)備在 devpath里的 ID 號(hào)。
$sysfs{file}, %s{file}:設(shè)備的 sysfs里 file 的內(nèi)容。其實(shí)就是設(shè)備的屬性值。
$env{key}, %E{key}:一個(gè)環(huán)境變量的值。
$major, %M:設(shè)備的 major 號(hào)。
$minor %m:設(shè)備的 minor 號(hào)。
$result, %c:PROGRAM 返回的結(jié)果。
$parent, %P:父設(shè)備的設(shè)備文件名。
$root, %r:udev_root的值,默認(rèn)是/dev/。
$tempnode, %N:臨時(shí)設(shè)備名。
%%:符號(hào) % 本身。
$$:符號(hào) $ 本身。




ENV{key}的特別說(shuō)明
linux內(nèi)核中表示不同的設(shè)備是通過(guò)major 和minor number實(shí)現(xiàn)的,通過(guò)major和minor Number來(lái)加載相應(yīng)的驅(qū)動(dòng)程序。
sda和sdb的major number都是8,sda的minor number是0開始, sdb的minor number 是16開始。
ENV{major}     major表示不同的設(shè)備類型
ENV{minor}     minor表示同一個(gè)設(shè)備的的不同分區(qū)
ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"




raw命令(以前RHEL4版本用的多,現(xiàn)在RHEL6用的少,不過(guò)RHEL6也是可以使用這樣的方式)
可以直接通過(guò)raw命令綁定裸設(shè)備,不過(guò)重啟后就丟失了,需要寫在/etc/sysconfig/rawdevices文件中如/dev/raw/raw1 /dev/sdb1
[root@localhost ~]# ll /dev/raw
總用量 0
crw-rw----. 1 root disk 162, 0 6月  23 16:58 rawctl

[root@localhost ~]# raw
Usage:
  raw /dev/raw/rawN  
  raw /dev/raw/rawN /dev/
  raw -q /dev/raw/rawN
  raw -qa

[root@localhost ~]# raw /dev/raw/raw1 /dev/sdb1
/dev/raw/raw1:  bound to major 8, minor 17

[root@localhost ~]# ll /dev/|grep sdb
brw-rw----.  1 root disk      8,  16 6月  23 16:59 sdb
brw-rw----.  1 root disk      8,  17 6月  23 16:59 sdb1

[root@localhost ~]# raw -qa
/dev/raw/raw1:  bound to major 8, minor 17

[root@localhost ~]# raw -q /dev/raw/raw1
/dev/raw/raw1:  bound to major 8, minor 17

[root@localhost ~]# ll /dev/raw
總用量 0
crw-rw----. 1 root disk 162, 1 6月  23 17:25 raw1
crw-rw----. 1 root disk 162, 0 6月  23 16:58 rawctl

[root@localhost ~]# cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m

關(guān)于UDEV規(guī)則的匹配鍵及RAW是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI