udev 規則學習

2021-06-08 23:45:06 字數 4042 閱讀 4547

action=="add", kernel=="sd[a-z][0-9]", run+="/bin/umount -l /media/usb_%k"

action=="add", kernel=="sd[a-z][0-9]", run+="/bin/rm -fr /media/usb_%k"

action=="add", kernel=="sd[a-z]", run+="/bin/umount -l /media/usb_%k"

action=="add", kernel=="sd[a-z]", run+="/bin/rm -fr /media/usb_%k"

action=="add", kernel=="sd[a-z][0-9]", run+="/bin/mkdir -p /media/usb_%k"

action=="add", kernel=="sd[a-z][0-9]", run+="/bin/mount /dev/%k /media/usb_%k -o iocharset=cp936"

action=="add", kernel=="sd[a-z][0-9]", run+="/bin/mount -t msdos /dev/%k /media/usb_%k -o iocharset=cp936"

action=="remove", kernel=="sd[a-z][0-9]", run+="/bin/umount -l /media/usb_%k"

action=="remove", kernel=="sd[a-z][0-9]", run+="/bin/rm -rf /media/usb_%k"

action=="add", kernel=="sd[a-z]", run+="/bin/mkdir -p /media/usb_%k"

action=="add", kernel=="sd[a-z]", run+="/bin/mount /dev/%k /media/usb_%k -o iocharset=cp936"

action=="add", kernel=="sd[a-z]", run+="/bin/mount -t msdos /dev/%k /media/usb_%k -o iocharset=cp936"

action=="remove", kernel=="sd[a-z]", run+="/bin/umount -l /media/usb_%k"

action=="remove", kernel=="sd[a-z]", run+="/bin/rm -rf /media/usb_%k"

mkdir -p 命令,有-p選項,如果父目錄不存在,則直接建立父目錄,並建立子目錄。

規則檔名,前面數字越小越先被解析

3.(檔名中的)50為預設值;數值越小越先被解析。

規則說明:

1.udev從頭到尾逐行解析每個規則檔案,每行代表乙個規則,每個規則由若干"鍵-值"(key-value)對組成。

2.鍵分為兩種:匹配鍵(match key)、賦值鍵(assignment key)。

3.每個規則必須至少有乙個匹配鍵和乙個賦值鍵。

4.每個規則一行,不可換行。

5.不可在一行規則中混合匹配兩個不同父裝置的屬性。

6.建立的裝置節點的mode預設值為0666

7.外部程式不會在終端執行,要確保程式為可執行,且指令碼以shebang開頭,終端不會有任何輸出。

8.用於獲取名稱的外部程式執行時,裝置節點尚未建立,所以不能訪問裝置節點。

常用匹配鍵:

* kernel     - 匹配裝置在核心中的命名

* subsystem  - 匹配裝置(在sysfs中)的subsystem名

* driver     - 匹配裝置對應的驅動名

* attr       - 匹配裝置在sysfs中屬性

* kernels    - 匹配裝置及其父親在核心中的命名

* subsystems - 匹配裝置及其父親(在sysfs中)的subsystem名

* drivers    - 匹配裝置及其父親對應的驅動名

* attrs      - 匹配裝置及其父親在sysfs中屬性

注:父親表示直到最上層的所有祖先

規則樣例:

[python]view plain

copy

print?

# 如果有裝置被核心命名為hdb,那麼建立裝置節點my_disk替代hdb(即用/dev/my_disk取代/dev/hdb)

kernel=="hdb"

, name=

"my_disk"

# 如果匹配到這樣乙個裝置:核心命名為hdb且驅動為ide-disk;那麼維持原裝置節點名不變

# 但是為它建立乙個叫sparedisk的符號連線(/dev/sparedisk->/dev/hdb)

kernel=="hdb"

, driver==

"ide-disk"

, symlink+=

"sparedisk"

# 為hdc建立兩個符號連線cdrom和cdrom0

kernel=="hdc"

, symlink+=

"cdrom cdrom0"

# 如果從sysfs匹配到乙個塊裝置且大小為234441648則為它的裝置節點建立符號連線my_disk

subsystem=="block"

, attr==

"234441648"

, symlink+=

"my_disk"

# 為/dev/mice建立符號連線/dev/input/mice

kernel=="mice"

, name=

"input/%k"

# 為loop0建立裝置節點/dev/loop/0,並為它建立符號連線/dev/loop0

kernel=="loop0"

, name=

"loop/%n"

, symlink+=

"%k"

# 為fd0~fd9建立裝置節點/dev/floppy/(0~9),並為它們建立符號連線/dev/fd(0~9)

kernel=="fd[0-9]*"

, name=

"floppy/%n"

, symlink+=

"%k"

# 為hiddev字串開頭的裝置建立裝置節點/dev/usb/diddev*

kernel=="hiddev*"

, name=

"usb/%k"

# 設定裝置節點的group、owner、mode

kernel=="fb[0-9]*"

, name=

"fb/%n"

, symlink+=

"%k"

, group=

"video"

, owner=

"john"

, mode=

"0666"

# 使用外部程式device_namer(hda為程式引數)的輸出作為符號連線名

kernel=="hda"

, program=

"/bin/device_namer %k"

, symlink+=

"%c"

# 外部程式輸出必須以單個空格隔開每個單詞; %c表示第n個單詞; %c表示從第n個到最後的所有單詞;

kernel=="hda"

, program=

"/bin/device_namer %k"

, name=

"%c"

, symlink+=

"%c"

# 執行外部程式

kernel=="sdb"

, run+=

"/usr/bin/my_program"

# 設定udev環境變數

kernel=="fd0"

, symlink+=

"floppy"

, env=

"value"

# 附加選項

kernel=="sda"

, group=

"disk"

, options+=

"last_rule"

haccess規則學習

rewriteengine on rewritecond mozilla 5 0.rewriterule index.php index.m.php rewritecond lynx.rewriterule index.php index.l.php rewriterule index.php in...

機器學習 規則學習

f1 f 2 fl 一階規則比 邏輯規則?強很多,能表達複雜的關係,稱為關係型規則,其語義層面與人類的語義層面一致。如何從訓練集學出單條規則 從空規則開始,將正例類別作為規則頭,逐個遍歷訓練集中的每個屬性及取值。在屬性和候選值較多時會存在組合 的問題。cn2 似然率統計量lrs lrs 2 m lo...

一階規則學習

受限於命題邏輯表達能力,命題規則學習難以處理物件之間的關係 relation 而關係資訊再很多任務中是很重要的,要用一階邏輯表示,使用一階規則學習。描述了樣例間關係的資料稱為關係資料 relational data 有原樣本屬性轉化而來的原子公式稱為背景知識 backgroundknowledge ...