Shell 生成任意大小的文件

Shell 生成任意大小的文件,包含随机数据的文件可用于测试。你可以使用这种文件测试应用程序效率,确定应用程序没有输入方面的缺陷和大小方面的限制,创建环回文件系统(环回文件自身包含文件系统,这种文件可以像物理设备一样使用mount命令进行挂载)等。Linux提供了一些可用于构建此类文件的实用工具。

Shell生成任意大小的文件

实战演练

创建特定大小的文件最简单的方法就是利用dd命令。dd命令会克隆给定的输入内容,然后将一模一样的一份副本写入到输出。stdin、设备文件、普通文件等都可作为输入,stdout、设备文件、普通文件等也可作为输出。下面是使用dd命令的一个示例:

$ dd if=/dev/zero of=junk.data bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00767266 s, 137 MB/s

该命令会创建一个内容全部为零的1MB大小的文件junk.data。
来看一下命令参数:

  • if表示输入文件(input file);

  • of表示输出文件(output file);

  • bs指定了以字节为单位的块大小(block size);

  • count表示需要被复制的块数。

以root身份使用dd命令时一定得留意,该命令运行在设备底层。要是你不小心出了岔子,搞不好会把磁盘清空或是损坏数据。一定要反复检查dd命令所用的语法是否正确,尤其是参数of=
在上面的例子中,我们将bs指定为1MB,count指定为1,于是得到了一个大小为1MB的文件。如果把bs设为2MB,count设为2,那么总文件大小就是4MB。

块大小(bs)可以使用各种计量单位,下表中任意一个字符都可以置于表示大小的数字之后。

单元大小 代码
字节(1B) C
字(2B) w
块(512B) B
千字节(1024B) K
兆字节(1024KB) M
吉字节(1024MB) G

我们可以利用bs来生成任意大小的文件。除了MB,表中给出的其他计量单位都可以使用。

/dev/zero是一个特殊的字符设备,它会返回0值字节(\0)。如果不指定输入参数(if),dd会从stdin中读取输入。如果不指定输出参数(of),则dd会使用stdout作为输出。

使用dd命令也能够用来测量内存操作的速度,这可以通过向/dev/null传输大量数据并观察命令输出来实现(例如,在前一个例子中显示出的1048576 bytes (1.0 MB) copied, 0.00767266 s, 137 MB/s)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程