【OS】Linux下 /dev 常见特殊设备介绍与应用[loop]

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【OS】Linux下 /dev 常见特殊设备介绍与应用[loop] 在这里详细介绍一下loop设备。在进行某些测试的时候,往往需要新建一些磁盘分区或者设备等,此时对硬盘进行重新划分往往不太方便。

【OS】Linux下 /dev 常见特殊设备介绍与应用[loop]



在这里详细介绍一下loop设备。在进行某些测试的时候,往往需要新建一些磁盘分区或者设备等,此时对硬盘进行重新划分往往不太方便这种情况下,可以通过loop伪设备来实现循环挂载,从而达到目的。在使用之前,循环设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件(参见设备文件系统)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁盘设备一般被挂载。这种设备文件经常被用于光盘或是磁盘镜像。通过循环挂载来挂载包含文件系统的文件,便使处在这个文件系统中的文件得以被访问。这些文件将出现在挂载点目录。

Linux中,设备名按照相应设备驱动程序的符号表项进行命名。这些设备被叫做“loop”设备,设备节点通常命名为/dev/loop0、/dev/loop1之类。

默认情况下Linux支持的loop设备是8个。如果需要超过8个的loop设备,那么可能会遇到类似的错误“no such device”或“could not find any free loop device”,这是因为超过了可用loop设置设备的最大限制,此时可以通过修改/etc/modprobe.conf配置文件,增加如下参数的方式进行扩展:

options loop max_loop=20  #此次增加到20

保存退出即可,如果要马上生效的话,那么可以通过modprobe -v loop命令立即加载该模块。

还有一种扩展loop设备数量办法是,用mknod命令创建loop块设备:

mknod -m 0660 /dev/loopX b 7 X

其中的X代表第Xloop设备。示例如下:

[root@rhel6lhr dev]# ll loop*

brw-rw---- 1 root disk 7, 0 Jul 27 09:39 loop0

brw-rw---- 1 root disk 7, 1 Jul 27 09:39 loop1

brw-rw---- 1 root disk 7, 2 Jul 27 09:39 loop2

brw-rw---- 1 root disk 7, 3 Jul 27 09:39 loop3

brw-rw---- 1 root disk 7, 4 Jul 27 09:39 loop4

brw-rw---- 1 root disk 7, 5 Jul 27 09:39 loop5

brw-rw---- 1 root disk 7, 6 Jul 27 09:39 loop6

brw-rw---- 1 root disk 7, 7 Jul 27 09:39 loop7

[root@rhel6lhr dev]# mknod -m 0660 /dev/loop8 b 7 8  

[root@rhel6lhr dev]# ll loop*

brw-rw---- 1 root disk 7,  0 Jul 27 09:39 loop0

brw-rw---- 1 root disk 7,  1 Jul 27 09:39 loop1

brw-rw---- 1 root disk 7,  2 Jul 27 09:39 loop2

brw-rw---- 1 root disk 7,  3 Jul 27 09:39 loop3

brw-rw---- 1 root disk 7,  4 Jul 27 09:39 loop4

brw-rw---- 1 root disk 7,  5 Jul 27 09:39 loop5

brw-rw---- 1 root disk 7,  6 Jul 27 09:39 loop6

brw-rw---- 1 root disk 7,  7 Jul 27 09:39 loop7

brw-rw---- 1 root root 7,  8 Jul 27 19:36 loop8

[root@rhel6lhr dev]# chown root:disk /dev/loop8

[root@rhel6lhr dev]# chown root:disk /dev/loop20

[root@rhel6lhr dev]# ll loop*

brw-rw---- 1 root disk 7,  0 Jul 27 09:39 loop0

brw-rw---- 1 root disk 7,  1 Jul 27 09:39 loop1

brw-rw---- 1 root disk 7,  2 Jul 27 09:39 loop2

brw-rw---- 1 root disk 7,  3 Jul 27 09:39 loop3

brw-rw---- 1 root disk 7,  4 Jul 27 09:39 loop4

brw-rw---- 1 root disk 7,  5 Jul 27 09:39 loop5

brw-rw---- 1 root disk 7,  6 Jul 27 09:39 loop6

brw-rw---- 1 root disk 7,  7 Jul 27 09:39 loop7

brw-rw---- 1 root disk 7,  8 Jul 27 19:36 loop8

使用命令losetup -a可以查询目前被使用的loop设备:

[root@rhel6lhr dev]# losetup -a

/dev/loop0: [0005]:6631 (/dev/sr0)

/dev/loop1: [fd01]:131081 (/u05/oracle/asmdisk/disk1)

/dev/loop2: [fd01]:131080 (/u05/oracle/asmdisk/disk2)

/dev/loop3: [fd01]:131082 (/u05/oracle/asmdisk/disk3)

/dev/loop4: [fd01]:131083 (/u05/oracle/asmdisk/disk4)

使用loop设备可以创建ASM磁盘,通过Faking的方式不需要额外添加磁盘,可以在现有文件系统上分配一些空间用于ASM磁盘,过程如下所示:

mkdir  -p  /oracle/asmdisk

dd if=/dev/zero of=/oracle/asmdisk/disk1 bs=1024k count=1000

dd if=/dev/zero of=/oracle/asmdisk/disk2 bs=1024k count=1000

 

/sbin/losetup /dev/loop1 /oracle/asmdisk/disk1

/sbin/losetup /dev/loop2 /oracle/asmdisk/disk2

 

raw /dev/raw/raw1 /dev/loop1

raw /dev/raw/raw2 /dev/loop2

 

chmod 660 /dev/raw/raw1

chmod 660 /dev/raw/raw2

chown oracle:dba /dev/raw/raw1

chown oracle:dba /dev/raw/raw2

将以下内容添加到文件/etc/rc.local文件中

/sbin/losetup /dev/loop1 /oracle/asmdisk/disk1

/sbin/losetup /dev/loop2 /oracle/asmdisk/disk2

 

raw /dev/raw/raw1 /dev/loop1

raw /dev/raw/raw2 /dev/loop2

 

chmod 660 /dev/raw/raw1

chmod 660 /dev/raw/raw2

chown oracle:dba /dev/raw/raw1

chown oracle:dba /dev/raw/raw2

这样就可以使用ASM磁盘了。

& 说明:

有关如何创建ASM磁盘的更多内容请参考:http://blog.itpub.net/26736162/viewspace-1401193/

 








linux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示。对于dev这个目录,我们知道它下面的文件,表示的是linux的设备。在windows系统中,设备大家很好理解,象硬盘,磁盘指的是实实在在硬件。而在文件系统的linux下面,都有对于文件与这些设备关联的。访问它们就可以放到实际硬件,想想还是linux灵活了。变成文件,操作该多简单了。不用调用以前com,prt等接口了。直接读文件,写文件就可以向设备发送读或者写操作了。 按照读写存储数据方式,我们可以把设备分为以下几种:字符型设备,块设备,伪设备。


一、设备分类

字符型设备

字符设备是指每次与系统传输1个字符的设备。这些设备节点通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务,它通常不支持随机存取数据。 字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。例如,键盘这种设备提供的就是一个数据流,当你敲入“cnblogs”这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由七个字符组成的数据流。它们是顺序的,先返回c,最后是s。

块设备

块设备是指与系统间用块的方式移动数据的设备。这些设备节点通常代表可寻址设备,如硬盘、CD-ROM和内存区域。

块设备通常支持随机存取和寻址,并使用缓存器。操作系统为输入输出分配了缓存以存储一块数据。当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。它与字符设备不同之处就是,是否支持随机存储。字符型是流形式,逐一存储。

伪设备

在类Unix操作系统中,设备节点并不一定要对应物理设备。没有这种对应关系的设备是伪设备。操作系统运用了它们提供的多种功能。部份经常使用到的伪设备包括: null,zero,full,loop,random,urandom

二、特殊设备及使用

这里说到特殊设备除了硬盘主板等,只是它在linux shell命令里面,有特殊的作用,因此把它们单独拿出来。这些设备分别是:

/dev/stdin
/dev/stdout
/dev/stderr
/dev/null
/dev/zero
/dev/full
/dev/random,urandom
/dev/fd
/dev/tcp|upd
/dev/loop

1、标准输出输入设备

还记得上次说的,linux重定向吗?可以看下:linux shell数据重定向(输入重定向与输出重定向)详细分析 。它们就是与几个特殊文件描述符对应,fd0,fd1,fd2 (stdin,stdout,stderr)

如:

[chengmo@centos5 shell]$ cat >teststdin< /dev/stdin
test
#ctrl+D
#cat从/dev/stdin获得数据,然后将标准输出,输入的到teststdin文件
[chengmo@centos5 shell]$ cat teststdin
test
   
[chengmo@centos5 shell]$ cat >teststdin
test
#ctrl+D
#不指定输入,默认输入设备就是/dev/stdinn


/dev/stdin指的就是键盘设备

[chengmo@centos5 shell]$ cat test.sh >/dev/stdout |grep 'echo'
echo "very good!";
echo "good!";
echo "pass!";
echo "no pass!"
#/dev/stdout指向就是标准输出,因此重定向给它的数据,最终发送到屏幕上(fd1)
      
[chengmo@centos5 shell]$ cat test.sh  |grep 'echo'           
echo "very good!";
echo "good!";
echo "pass!";
echo "no pass!";
  
      
[chengmo@centos5 shell]$ cat test.sh >/dev/stderr |grep 'echo'  
#!/bin/sh
  
scores=40;
if [[ $scores -gt 90 ]]; then
    echo "very good!";
elif [[ $scores -gt 80 ]]; then
    echo "good!";
elif [[ $scores -gt 60 ]]; then
    echo "pass!";
else
    echo "no pass!";
fi;
#/dev/stderr 指是错误输出,默认也是输出到屏幕上面,但是它的内容不能通过管道传递给grep,管道只能传递标准输出


/dev/null设备

是个黑洞设备,它丢弃一切写入其中数据,空设备通常被用于丢弃不需要的输出流。记得当年用windows时候,有个类似的设备:NUL ,跟这个功能一样。任何写入该设备数据都会被丢弃掉。从这个里面读取数据返回是空。将一些不用内容经常发送给这个设备,丢弃不需要的数据。

如:

[chengmo@centos5 shell]$ cat /dev/null
[chengmo@centos5 shell]$ cat test .sh > /dev/null
#读该设备为空,写入该设备数据都丢弃了



/dev/zero设备

在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。

如:

[chengmo@centos5 shell]$ dd if = /dev/zero of=testzero count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0107194 seconds, 97.8 MB /s
#创建一个大小为1M文件,该文件一个块是1024字节,一共是1024块(刚好1M),用/dev/zero文件内容填充它。输出创建到:testzero文件
   
   
[chengmo@centos5 shell]$ dd if = /dev/zero of= /dev/ 磁盘分区
#这个命令一定不要随便用,有点象windows里面的粉碎文件工具。不过它是用\0x00填充整个分区。这样做数据是不可以恢复的了。
   
[chengmo@centos5 shell]$ cat /dev/zero >testinputzero
#这个命令也不能随便使用咯,/dev/zero设备一个特效是,如果你读取的话,是一个死循环会输出无穷的\x00,这样你将创建一个用\x00填充的文件。如果你没有限制该用户磁盘配额。它将耗尽整个磁盘空间。


在linux资源配额限制里面,如果没有现在普通用户的磁盘空间利用,或内存使用。一个普通用户就可以通过上面方法一会就塞满整个磁盘。也可以通过while(true) {fork……}类程序,启动无限线程,耗尽整个系统内存。


/dev/full设备

类Unix系统中,/dev/full(常满设备)是一个特殊设备文件,总是在向其写入时返回设备无剩余空间(错误码为ENOSPC),读取时则与/dev/zero相似,返回无限的空字符(NULL, ASCII NUL, 0x00)。这个设备通常被用来测试程序在遇到磁盘无剩余空间错误时的行为。

如:

[chengmo@centos5 shell]$ echo 'chengmo' > /dev/full
- bash : echo : write error: 设备上没有空间
[chengmo@centos5 shell]$ echo $?
1
#命令执行返回错误


/dev/random[urandom]

在类UNIX操作系统中,/dev/random是一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器。它允许程序访问来自设备驱动程序或其它来源的背景噪声。常用作随机数发生器。具体参考:linux shell实现随机数多种方法(date,random,uuid)


/dev/fd

记录用户打开的文件描述符

[chengmo@centos5 shell]$ ls /dev/fd/
0 1 2 3

详细参考:

linux shell数据重定向(输入重定向与输出重定向)详细分析 文件描述符介绍。


/dev/tcp[udp]/host/port

读取该类形式设备,将会创建一个连接host主机port端口的tcp[upd]连接。打开一个socket通讯接口。

详细使用可以参考:

linux shell 脚本实现tcp/upd协议通讯(重定向应用)


/dev/loop

在类UNIX操作系统中,Loop设备 可以把loop 文件,作为块设备挂载使用。

如:

[chengmo@centos5 shell]$mount -o loop example.img /home/chengmo/img

#将img镜像文件挂载到/home/chengmo/img目录下面,有了这个设备,我们不需要通过虚拟光驱就可以读虚拟磁盘格式的文件。

说了很多linux 特殊设备,其它象cpu,内存,磁盘,网络,键盘,终端设备。跟我们windows里面常见差不多。有什么问题,欢迎交流!



       
在日常的后台测试中,经常会在一些诸如dd等操作中用到一些系统的设备类型,如/dev/zero、/dev/null等,接下来我们就将对这些设备类型的具体含义以及其适用场景进行一个简单的介绍,以便于大家在今后的测试工作中可以更好的对其进行了解和使用。


1、/dev/null(可以理解为系统的垃圾桶)

把 /dev/null 看作"黑洞", 它非常等价于一个只写文件, 所有写入它的内容都会永远丢失。而尝试从它那儿读取内容则什么也读不到。然而, /dev/null 对命令行和脚本都非常的有用。

用法1:禁止标准输出

cat $filename > /dev/null

解析:文件内容丢失,而不会输出到标准输出。


用法2:禁止标准错误    

rm $badname 2> /dev/null 
解析:这样错误信息 [标准错误] 就被直接丢进垃圾桶了。


用法3:禁止标准输出和标准错误的输出    

cat $filename 2> /dev/null > /dev/null 
解析: 如果"$filename"不存在,将不会有任何错误信息提示;
            如果"$filename"存在,文件的内容不会打印到标准输出;
因此Therefore, 上面的代码根本不会输出任何信息,当只想测试命令的退出码而不想有任何输出时非常有用。


用法4:自动清空某些文件内容

cat /dev/null > /var/log/wtmp
解析:自动清空日志文件的内容 (特别适合处理这些由商业Web站点发送的讨厌的"cookies")


--------------------------------------------------------------------------------

例:隐藏cookie而不再使用

if [ -f ~/.netscape/cookies ]  # 如果存在则删除.
then
    rm -f ~/.netscape/cookies
fi
ln -s /dev/null  ~/.netscape/cookies # 现在所有的cookies都会丢入黑洞而不会保存在磁盘上了。

备注:

/dev/null ------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。


2、/dev/zero(空文件)

      像 /dev/null 一样,/dev/zero也是一个伪文件,但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的)。写入它的输出会丢失不见,而从/dev/zero读出一连串的null 也比较困难,虽然这也能通过od或一个十六进制编辑器来做到。/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件。

例:dd一个20G大小的空间,不写入任何内容。

dd if=/dev/zero of=test.img bs=1G count=20

备注:

/dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。


3、/dev/random以及/dev/urandom(linux系统中的随机数生成设备)


Linux中的随机数可以从两个特殊的文件中产生,一个是/dev/urandom.另外一个是/dev/random。

他们产生随机数的原理是利用 当前系统的熵池来计算出固定一定数量的随机比特,然后将这些比特作为字节流返回。熵池就是当前系统的环境噪音,熵指的是一个系统的混乱程度,系统噪音可以 通过很多参数来评估,如内存的使用,文件的使用量,不同类型的进程数量等等。如果当前环境噪音变化的不是很剧烈或者当前环境噪音很小,比如刚开机的时候, 而当前需要大量的随机比特,这时产生的随机数的随机效果就不是很好了。

这就是为什么会有/dev/urandom和/dev/random这两种不同的文件,后者在不能产生新的随机数时会阻塞程序,而前者不会 (ublock),当然产生的随机数效果就不太好了,这对加密解密这样的应用来说就不是一种很好的选择。/dev/random会阻塞当前的程序,直到根 据熵池产生新的随机字节之后才返回,所以使用/dev/random比使用/dev/urandom产生大量随机数的速度要慢。

举例:

[lxf@sg01 dd]$ dd if=/dev/random of=random.dat bs=1024b count=1 

       0+1 records in  

       0+1 records out  

      128 bytes (128 B) copied, 0.000169 seconds, 757 kB/s

[lxf@sg01 dd]$ dd if=/dev/urandom of=random.dat bs=1024b count=1  

      1+0 records in  

      1+0 records out  

      524288 bytes (524 kB) copied, 0.091297 seconds, 5.7 MB/s 

解析:

从上面的测试中,可以看到使用/dev/random产生随机数的速度很慢,而且产生的量很有限,当然,/dev/urandom的随机效果则好很多。





 

/dev/loop与设备文件系统


摘要:在进行测试的时候,我们往往需要新建一些磁盘分区或者设备等,此时对硬盘进行重新划分往往不太方面。这种情况下,我们可以通过伪设备来实现循环挂载,从而达到目的。本文主要为你讲解什么是循环挂载,什么是虚拟设备,设备和文件系统有什么关系。


1.循环挂载


类Unix系统中,/dev/loop(或称vnd (vnode disk)、lofi(循环文件接口))是一种伪设备,这种设备使得文件可以如同块设备一般被访问。

在使用之前,循环设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件(参见设备文件系统)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁盘设备一般被挂载

这种设备文件经常被用于光盘或是磁盘镜像。通过循环挂载来挂载包含文件系统的文件,便使处在这个文件系统中的文件得以被访问。这些文件将出现在挂载点目录。


2.可用性


在各种操作系统中循环设备的命名存在着一些混乱。各种类Unix操作系统中,功能性的循环设备被以不同的名字命名。

在Linux中,设备名按照相应设备驱动程序的符号表项进行命名。这些设备被叫做”loop“设备,设备节点通常命名为/dev/loop0/dev/loop1之类。 静态设备目录可以用makedev脚本创建,或者动态地由设备文件系统(udev)设施创建。 循环设备的管理界面是 losetup,这是util-linux软件包的一部分。

有时,循环设备被错误地认为是回环设备,但是这个术语在Linux内核中是为网络设备保留的(参见回环设备)。循环设备的概念和回环设备不同,虽然在名字上有相似的地方。

NetBSDOpenBSD等BSD所派生的系统中,循环设备被称为“虚拟节点设备”或“vnd”,并且设备被置于 /dev/vnd0/dev/rvnd0 或/dev/svnd0等处。在文件系统中,使用vnconfig程序来进行配置。

FreeBSD在发行版5之前和其他BSD系统一样遵守约定,之后循环设备便被纳入记忆磁盘设备("md")。目前使用mdconfig[1]程序进行配置。

Solaris/OpenSolaris中,循环设备被称为 "回环文件接口" 或 lofi,[2] 位于 /dev/lofi/1等处。SunOS 拥有 lofiadm 配置程序。"lofi"驱动程序支持只读压缩和可读写的加密。 自从1988年夏季开始更有SunOS/Solaris平台的第三方驱动 "fbk"[3] (文件模拟块设备,英文:File emulates Blockdevice)

Mac OS X实现了一个本地的镜像挂载机制并作为其随机访问磁盘设备的抽象。这些设备如同普通设备一样出现在 /dev 中,读写操作被送往一个用户模式的辅助进程,并由辅助进程负责读取和写入的操作。在用户界面中当打开磁盘镜像的时候自动被启用。这可以处理多种格式的盘片、CD-ROM 或 DVD 镜像。

Microsoft Windows操作系统上并不能原生支持循环挂载(直到Windows 7,这个功能才被原生实现,并通过工具diskpart进行工作)。 [4] 然而,这项能力经常通过第三方程序得以实现,例如Daemon Tools 和 Alcohol 120% VMware的免费工具以及LTR Data (ImDisk)都可以实现类似的功能


3.实例


在目录上挂载包含文件系统的文件一般需要两步:


  1. 用一个循环设备节点连接文件。
  2. 在目录上挂载该循环设备


这两个操作既可以用两条命令来完成,也可以通过加上特殊的挂载符号的挂载命令来完成。第一个操作可以通过如Linux平台下的losetup[5]或者是SunOS上的lofiadm[6]命令完成。

例如,如果 example.img 是一个包含文件系统的常规文件,并且 /home/you/dir 是 Linux用户的目录,超级用户(root)或许可以通过执行如下的命令来将文件挂载在目录上:

losetup /dev/loop0 example.img
mount /dev/loop0 /home/you/dir 

其中第二条命令将设备挂载于目录 /home/you/dir。执行上述语句的效果便是文件被作为文件系统挂载,文件的内容出现在被挂载的目录中(以被挂载的目录作为根目录)。

此外 mount 工具常常可以胜任整个挂载的程序:

mount -o loop example.img /home/you/dir 

之后设备便能用下列命令实现卸载:

umount /home/you/dir # 或者通过诸如 mount | grep "/home/you/dir" 
# 或是 losetup -a | grep example.img 的查找找到与文件相关联的loop设备号码
# 并执行下列命令:(代表设备号) umount /dev/loop  

在较底层的应用程序接口中,文件的关联与解除关联通过在循环设备上的ioctl 系统调用来实现。


4.设备文件



类Unix操作系统中,设备文件系统允许软件通过标准输入输出系统调用与驱动程序交互,从而简化了许多任务。

设备文件系统包括设备文件设备节点设备特定文件,它们是驱动程序接口,而在文件系统中,它们就像是普通文件


5.设备


5.1块设备


块设备是指与系统间用块的方式移动数据的设备。这些设备节点通常代表可寻址设备,如硬盘CD-ROM内存区域。

块设备通常支持随机存取和寻址,并使用缓存器。操作系统为输入输出分配了缓存以存储一块数据。当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。


5.2字符设备


字符设备是指每次与系统传输1个字符的设备。这些设备节点通常为传真虚拟终端和串口调制解调器之类设备提供流通信服务,它通常不支持随机存取数据。

字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。


5.3伪设备


在类Unix操作系统中,设备节点并不一定要对应物理设备。没有这种对应关系的设备是伪设备。操作系统运用了它们提供的多种功能。部份經常使用到的偽設備包括:

/dev/null 接受和丟棄所有輸入;即不產生任何輸出。 /dev/full 永遠在被填滿狀態的設備。 /dev/loop Loop設備 /dev/zero 產生連續的NUL字元的串流(數值為0)。 /dev/random 產生一個虛假隨機的任意長度字元串流。(Blocking) /dev/urandom 產生一個虛假隨機的任意長度字元串流。(Non-Blocking)


6.两个相关的linux命令


 6.1dd命令


 dd - convert and copy a file

 bs=BYTES
              read and write up to BYTES bytes at a time

if:inputfile

of:outputfile


6.2losetup命令


  losetup - set up and control loop devices

  Delete loop:
            losetup -d loopdev...
       Print name of first unused loop device:
            losetup -f







About Me

.............................................................................................................................................

● 本文整理自网络

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群:230161599     微信群:私聊

● 联系我请加QQ好友(646634621),注明添加缘由

● 于 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

   小麦苗的微信公众号          小麦苗的QQ群             小麦苗的微店

.............................................................................................................................................


DBA笔试面试讲解
欢迎与我联系



目录
相关文章
|
20天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
41 0
Vanilla OS:下一代安全 Linux 发行版
|
13天前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
32 5
|
28天前
|
安全 算法 Unix
深入浅出操作系统:从基础概念到实践应用
【10月更文挑战第22天】本文旨在以浅显易懂的语言,为读者揭开操作系统的神秘面纱。我们将从操作系统的基本概念出发,逐步深入其核心功能与设计哲学,并通过具体代码示例,展示操作系统如何在实际中发挥作用。无论你是计算机科学的学生,还是对技术有浓厚兴趣的爱好者,这篇文章都将为你提供一次轻松愉快的操作系统之旅。
40 4
|
28天前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
1月前
|
安全 搜索推荐 Ubuntu
|
2月前
|
Java 开发工具 Android开发
移动应用开发之旅:探索移动操作系统与应用构建的奥秘
【8月更文挑战第33天】在数字时代的浪潮中,移动应用已成为我们日常生活的一部分。本文将带您深入理解移动操作系统的工作原理,并揭示如何在这个多姿多彩的平台上开发出引人入胜的应用。我们将从基础概念出发,逐步深入到高级编程技巧,最终通过一个实际的代码示例,展示如何将理论应用于实践。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和灵感。让我们一起踏上这场激动人心的移动应用开发之旅吧!
|
3月前
|
Rust 安全 编译器
【颠覆传统】Rust跨平台开发秘籍:如何轻松驾驭多操作系统,打造无缝兼容应用?
【8月更文挑战第31天】Rust语言凭借其内存安全、卓越性能及丰富的标准库支持,正逐渐成为跨平台开发的新宠。本文通过具体代码示例,展示如何用Rust编写可在多种操作系统上无缝运行的应用程序。Rust通过所有权、借用和生命周期等机制提升代码安全性,并在编译时检测潜在错误。其编译器支持广泛平台,包括Windows、macOS和Linux等,非常适合跨平台开发。此外,Rust还可用于开发复杂的GUI应用,利用GTK、Qt等成熟框架实现跨平台图形界面。无论开发命令行工具还是图形界面应用,Rust均能提供高效稳定的解决方案。
215 1
|
3月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
|
3月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
221 3
下一篇
无影云桌面