/dev是什么 linux

2018-04-19 15:11:52 wz947324 阅读数 25479

转载自  https://blog.csdn.net/maopig/article/details/7195048

       在linux下,/dev目录是很重要的,各种设备都在下面。下面简单总结一下:

  dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。

  Linux沿袭Unix的风格,将所有设备认成是一个文件。

  关于一些特殊设备,我曾经总结过一些:

  /dev/null和/dev/zero:http://www.51testing.com/index.php?uid-225738-action-viewspace-itemid-235339

  /dev/tty、/dev/console、/dev/pty、/dev/pts等:http://www.51testing.com/index.php?uid-225738-action-viewspace-itemid-212419

  设备文件分为两种块设备文件(b)字符设备文件(c)

  设备文件一般存放在/dev目录下,对常见设备文件作如下说明:

  /dev/hd[a-t]:IDE设备

  /dev/sd[a-z]:SCSI设备

  /dev/fd[0-7]:标准软驱

  /dev/md[0-31]:软raid设备

  /dev/loop[0-7]:本地回环设备

  /dev/ram[0-15]:内存

  /dev/null:无限数据接收设备,相当于黑洞

  /dev/zero:无限零资源

  /dev/tty[0-63]:虚拟终端

  /dev/ttyS[0-3]:串口

  /dev/lp[0-3]:并口

  /dev/console:控制台

  /dev/fb[0-31]:framebuffer

  /dev/cdrom => /dev/hdc

  /dev/modem => /dev/ttyS[0-9]

  /dev/pilot => /dev/ttyS[0-9]

  /dev/random:随机数设备

  /dev/urandom:随机数设备

  (PS:随机数设备,后面我会再写篇博客总结一下)

  /dev目录下的节点是怎么创建的?

  devf或者udev会自动帮你创建得。

  kobject是sysfs文件系统的基础,udev通过监测、检测sysfs来获取新创建的设备的。

2018-04-16 15:06:19 baidu_36649389 阅读数 3316

/dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流。很多解密程序与安全应用程序(如SSH Keys,SSL Keys等)需要它们提供的随机数据流。

这两个设备的差异在于:/dev/random的random
pool依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用, /dev/random设备可以保证数据的随机性。/dev/urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高。

字符设备文件的打开方式和其它文件一样,都是使用open函数即可。

/dev/random和/dev/urandom的使用方法如下:

#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd=0;
char *buff=NULL;
unsigned long ulTest = 0;
fd=open("/dev/urandom",O_RDONLY);
read(fd,&ulSeed,sizeof(ulTest));
printf("%ul",ulTest);
close(fd);
}
编译之后执行即可。

感觉linux系统博大精深啊!

完!


2019-02-02 23:32:13 sinat_26058371 阅读数 5772

Unix/Linux将每一个设备都当成一个文件,放在/dev目录下。这些文件有的对应着一个真实存在的物理设备;有的则代表一个虚拟设备,提供一些特定的功能。

下面介绍三个常用的虚拟设备:

/dev/null
“空”设备,也有人称它为黑洞。任何输入到这个“设备”的数据都将被直接丢弃。最常用的用法是把不需要的输出重定向到这个文件。例如:

$ run.sh 1>/dev/null 2>&1  #将标准输出和错误输出重定向到/dev/null,运行这个脚本不会输出任何信息到终端

/dev/zero
“零”设备,可以无限的提供空字符(0x00,ASCII代码NUL)。常用来生成一个特定大小的文件。例如:

$ dd if=/dev/zero of=./output.txt bs=1024 count=1 #产生一个1k大小的文件output.txt

/dev/random和/dev/urandom
随机数设备,提供不间断的随机字节流。二者的区别是/dev/random产生随机数据依赖系统中断,当系统中断不足时,/dev/random设备会“挂起”,因而产生数据速度较慢,但随机性好;/dev/urandom不依赖系统中断,数据产生速度快,但随机性较低。
读取这两个文件的输出如下:

$ cat /dev/random | od -x
0000000 34fa b5ea 0901 b7e0 27a9 623a 0879 d9eb
0000020 d212 4f6f d928 6637 84a4 8ec5 fc2c 4896
$ cat /dev/urandom | od -x | head -n 5
0000000 8048 4dbd 07c9 2119 02d0 221b 89ba af7f
0000020 3d6f 6a72 3752 4a09 5a47 a3fb dc98 ed9f
0000040 f3e8 e82d 6748 2e14 de80 7554 bb52 f56c
0000060 de73 0e51 262f 5a63 af69 b45c ee49 c1bf
0000100 76b4 6db5 4e5b e438 70fb d207 a28c 04a8

在上面的例子中,读取/dev/random文件在输出了两行之后就停住了(系统中断不足),而/dev/urandom产生数据速度很快,没有任何停顿。

下面这个例子,利用/dev/urandom设备产生一个128位的随机字符串:

$ str=$(cat /dev/urandom | od -x | tr -d ' ' | head -n 1)
$ echo ${str:7}
17539187d2e8b8e26d49bec90465c14d 
2018-05-14 16:10:01 jpmsdn 阅读数 1315

Linux系统/dev/mapper目录浅谈

 Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/mapper/VolGroup-lv_root和/dev/mapper/Volume-lv_home两个文件系统名,不解,在网上查找资料后,在此浅谈/dev/mapper目录。

一、理解Linux系统的Device mapper机制

   Device mapper是Linux2.6内核中提供的一种从逻辑设备到物理设备的映射机制,在该机制下,用户能够很方便的根据自己的需要实现对存储资源的管理。在具体管理时需要用到Linux下的逻辑卷管理器,当前比较流行的逻辑卷管理器有 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper Raid Tool)等。

   想要详细了解Device mapper机制,可参考博文 http://blog.sina.com.cn/s/blog_6237dcca0100hnwb.html ,此处不再赘述。

二、/dev/mapper目录的解释

   为了方便叙述,假设一台服务器有三块硬盘分别为a,b,c,每块硬盘的容量为1T。在安装Linux的时候,先根据系统及自身的需要建立基本的分区,假设对硬盘a进行了分区,分出去了0.1T的空间挂载在/boot目录下,其他硬盘未进行分区。系统利用Device mapper机制建立了一个卷组(volume group,VG),你可以把VG当做一个资源池来看待,最后在VG上面再创建逻辑卷(logical volume,LV)。若要将硬盘a的剩余空间、硬盘b和硬盘c都加入到VG中,则硬盘a的剩余空间首先会被系统建立为一个物理卷(physical volume,PV),并且这个物理卷的大小就是0.9T,之后硬盘a的剩余的空间、硬盘b和硬盘c以PV的身份加入到VG这个资源池中,然后你需要多大的空间,就可以从VG中划出多大的空间(当然最大不能超过VG的容量)。比如此时池中的空间就是2.9T,此时你就可以建立一个1T以上的空间出来,而不像以前最大的容量空间只能为1T。

   /dev/mapper/Volume-lv_root的意思是说你有一个VG (volume group卷组)叫作Volume, 这个Volume里面有一个LV叫作lv_root。其实这个/dev/mapper/Volume-lv_root文件是一个连接文件,是连接到/dev/dm-0的,你可以用命令ll /dev/mapper/Volume-lv_root进行查看。

   其实在系统里/dev/Volume/lv_root 和 /dev/mapper/Volume-lv_root以及/dev/dm-0都是一个东西,都可当作一个分区来对待。

   若要了解硬盘的具体情况,可通过fdisk或者pvdisplay命令进行查看。

   若你想要重装系统到/dev/sda下,且安装时有些东西不想被格式化想转移到/dev/sdb下,但此时/dev/sda和/dev/sdb被放到VG中了,那该如何解决该问题呢?这种情况下,由于此时根本没办法确定数据在哪一个硬盘上,因为这两个硬盘就如同加到池里,被Device mapper管理,所以解决方案就是再建个逻辑卷出来,把数据移到新的卷里,这样你就可以重装系统时只删掉之前分区里的东西,而新的卷里的东西不动,就不会丢失了。

2017-11-23 13:26:01 zhongqi2513 阅读数 79168

Linux中的标准输入输出

标准输入0    从键盘获得输入 /proc/self/fd/0 
标准输出1    输出到屏幕(即控制台) /proc/self/fd/1 
错误输出2    输出到屏幕(即控制台) /proc/self/fd/2 

/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞” 

1、2>/dev/null意思就是把错误输出到“黑洞” 

2、>/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞” 

3、2>&1 >/dev/null意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕 
关于这里”&”的作用,我们可以这么理解2>/dev/null重定向到文件,那么2>&1,这里如果去掉了&就是把错误输出给了文件1了,用了&是表明1是标准输出。


参考https://segmentfault.com/q/1010000002454596

Linux /dev/null

阅读数 1371