udev的简单用法举例

udev是kernel2.6中针对设备管理产生的新方式,udev可以通过sysfs下的/sys目录找到设备的相关信息,因此不需要事先把所有可能用到的设备文件在/dev中创建,而是动态灵活的支持热插拔功能,自动创建相关设备的设备文件,非常有弹性。

udev中的配置文件在/etc/udev/下,其中rule.d/目录里面是具体的规则文件(待会会重点讲解规则的书写),udev.conf是udev全局配置文件。

当用vim打开udev.conf文件的时候,会发现里面只有一条关于udev的log等级的内容

当然,我们可以在此conf文件里面写入其他内容,比如udev_root=/dir,就代表我们的设备文件可以在自己定义的目录里,默认是在/dev/下,没有特殊需求,一般不用加入这个条目。

下面重点讲解udev规则的写法,讲解之前我们考虑这样一个场景,比如我们发现一个IP-SAN的设备,比如ISCSI,因为ISCSI设备并不在本地服务上,所以可能存在每次连接ISCSI设备的时候,我们的设备名称不一样(第一次发现可能是/dev/sdb,第二次发现的时候可能叫/dev/sdc),这样会造成用户使用的时候出现设备不不一致的问题,或者当我们插入一个U盘的时候,我希望U盘的名字叫做myusb,而不再是系统分配的名称的时候,就需要书写规则,这也是udev带来的好处。那么我们所有的默认规则存放的路径就是在刚才提到的/etc/udev/rule.d/目录下

可以发现此规则命名的方式为:  数字-规则名.rules,因此我们自定义规则的名字可以把数字放的大一些,但不可以超过100,比如我们可以写一个规则叫做   99-myusb.rules

这其中有一些书写规则的格式和符号需要了解

格式:

符号:    ==   匹配键值对

=   赋值

+=追加赋值

:=赋值后不可以被覆盖

下面我们举个刚才的例子来掩饰,当插入一个U盘的时候,默认系统会生成一个/dev/sdX设备名

通过编写自己的规则,使得U盘插入后,可以生成一个自定义的设备名 如/dev/myusb

那么接下来有一个问题需要考虑,系统凭什么认为你插入的U盘就是myusb设备,而不是其他呢?这就需要为这个特殊的U盘找到一个(一些)仅仅属于它自己的属性(唯一性)

通过udevadm   info  -a(所有属性) -p (路径) 命令来查看设备的属性

udevadm info  -a  -p /sys/block/sdb

找到一些特殊的属性

下面给出简单的规则信息:

重新插入U盘,会生成一个/dev/myusb设备

当然,我们的规则中还可以加入更多内容,比如当插入此U盘后,有系统自动识别的名字叫做/dev/sdb,同时给这个设备做个链接,名字叫做/dev/myusb

重新插入U盘,观察到有/dev/sdb,同时有个链接到sdb上的/dev/myusb

当然,我们还可以加入更多内容,udev提供了丰富的资源,比如可以为增加的设备加入拥有人和拥有组的权限,可以增加一个设备的同时,立刻运行一个脚本等功能。

时间: 2025-01-02 21:31:08

udev的简单用法举例的相关文章

while 简单用法 举例

static void Main(string[] args) { int n = 0; while (n<100) { n++; if (n %2==0) { Console.Write(n+"是偶数"); } else { Console.Write("\n\t"+n+"是奇数"); } Console.Read(); } }

linux expect的简单用法及举例

一.expect简介 我们通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能.而Expect就使用来实现这种功能的工具. Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预.Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [

Tcpdump 的简单用法

Tcpdump 的简单用法 tcpdump是Linux命令行下使用最广泛的网络分析工具,运行的时候会将网卡运行在混杂模式下,需要root权限才能执行 下面是几个比较常见的参数: -w  保持到指定的文件 -i  指定监听的网卡,缺省显示第一块网卡 -nn 以IP方式显示host -v  显示详细信息 -s  指定数据包大小,缺省是65535 -t  不显示时间 ,缺省是显示时间戳 -c  获取数据包数量,缺省不限制,需要用Ctrl+c来终止 下面是关于命令关键字的说明 1.主要包括host,ne

线程框架Executor的用法举例

java5线程框架Executor的用法举例 Executor 是 java5 下的一个多任务并发执行框架(Doug Lea),可以建立一个类似数据库连接池的线程池来执行任务.这个框架主要由三个接口和其相应的具体类组成.Executor. ExecutorService 和 ScheduledExecutorService . 1. Executor 接口:是用来执行 Runnable 任务的:它只定义一个方法- execute(Runnable command):执行 Ruannable 类型

Oracle高级函数篇之递归查询start with connect by prior简单用法

路飞:" 把原来CSDN的博客转移到博客园咯!" 前段时间,自己负责的任务中刚好涉及到了组织关系的业务需求,自己用了oracle递归查询.下面简单来举个例子.在工作中我们经常会遇到有一定组织关系层次的关系.比如某个省下有多少市,每个市下又有多个区.再或者公司组织部门相互的隶属关系.这时我们就可能会用到 start with connect by prior 递归查询了 用法举例 1. 基本sql语法: select  ...   from  + 表   start with      

Numpy的简单用法

Numpy的简单用法 import numpy as np 一.创建ndarray对象 列表转换成ndarray: >>> a = [1,2,3,4,5] >>> np.array(a) array([1, 2, 3, 4, 5]) 取随机浮点数 >>> np.random.rand(3, 4) array([[ 0.16215336, 0.49847764, 0.36217369, 0.6678112 ], [ 0.66729648, 0.86538

聚集索引与非聚集索引的用法举例与使用注意

聚集索引 用法举例 小明需要查找一个人的姓名,知道他在公司的营销部门的1010办公室的4号座位.这个时候如果需要专门为小明建一个聚集索引表就是,以公司部门表内部门名称排序,再以房间总表序号排序,最后以房间详细表的座位表排序,这样就可以最快的找到他要找的人 聚集索引类似于一个字典,我们知道拼音来寻找字,首先我们知道字音节的首字母,从按a-z排序的字典中找到这个字首字母所在的区域,再从这个区域找到韵母所在的区域,当然韵母在字典中也有顺序,最后就可以找到我们想要的字了 注意事项 限制原则 每个表只能有

iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题

本文转载至 http://www.tuicool.com/articles/aANBF3m 时间 2014-12-07 20:13:37  segmentfault-博客原文  http://segmentfault.com/blog/alan/1190000002411296 iOS的各种动画相漂亮,相信这是吸引很多人买iPhone的原因之一.不仅如此,这还是吸引我做iOS开发的一大原因,因为在iOS上给界面实现一些像样的动画实在是太轻松了! 这里就介绍一下iOS的block-based an

用vs2010编译vigra静态库及简单使用举例

1.  从 http://ukoethe.github.io/vigra/ 下载最新源代码vigra-1.10.0-src-with-docu.tar.gz,并加压缩到D:\soft\vigra,生成vigra-1.10.0文件夹: 2.  从http://www.cmake.org/cmake/resources/software.html下载CMake并安装: 3.  打开CMake,Where is thesource code: D:/soft/vigra/vigra-1.10.; Wh