前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件读写测试,磁盘读写测试全靠它

文件读写测试,磁盘读写测试全靠它

作者头像
编程珠玑
发布2019-11-28 22:20:05
2.1K0
发布2019-11-28 22:20:05
举报
文章被收录于专栏:编程珠玑

来源:公众号【编程珠玑】

作者:守望先生

ID:shouwangxiansheng

有时候需要测试磁盘读写速度,或者临时读写文件,不想临时写代码?有没有测试使用的命令?当然有!

dd命令

dd命令可以用于文件的拷贝或者内容转换。常见操作选项如下:

  • bs=BYTES 一次读写字节数
  • ibs=BYTES 一次读的字节数
  • obs=BYTES 一次写的字节数
  • cbs=BYTES 一次转换的字节数
  • count=N 读写次数
  • of=FILE 将内容写到FILE,默认写入标准输出
  • if=FILE 从FILE中读取,默认从标准输入读取
  • conv=CONVS 转换标志

更多选项可查看man手册。

来看一些实例。

将文件的内容进行大小写转换

加入文件test.txt中有以下内容:

代码语言:javascript
复制
shouwangxiansheng

现在要将内容转换为大写:

代码语言:javascript
复制
$ dd if=test.txt of=utest.txt conv=ucase
0+1 records in
0+1 records out
18 bytes copied, 0.0123523 s, 1.5 kB/s

执行完成后,再看看utest.txt中的内容:

代码语言:javascript
复制
SHOUWANGXIANSHEN

看到没,已经将所有内容转换为大写了。

当然要达到这个目的有很多方法,比如要将test.txt内容的小写都转为大写,并且保存在utest.txt中。

代码语言:javascript
复制
$ cat test.txt | tr 'a-z' 'A-Z' > utest.txt

解释一下,conv=ucase,表示转换操作是转换为大写,你还可以使用:

  • lcase 转换为小写
  • ucase 转换为大写
  • swab 相邻字节交换

拷贝文件

例如将test.txt文件内容拷贝到test0.txt文件,每次拷贝1024字节:

代码语言:javascript
复制
$ dd if=test.txt of=test0.txt bs=1024

读取指定次数:

代码语言:javascript
复制
$  dd if=a of=b bs=1024 count=10 #读取10次

跳过指定块大小开始读取: 假设ibs=1,那么,每次读取1字节,而skip=4,则会从第五个字节开始读取:

代码语言:javascript
复制
dd if=test.txt of=test0.txt ibs=1 skip=4

得到内容:

代码语言:javascript
复制
$cat test0.txt
wangxiansheng

那如果要从指定位置开始写呢?

代码语言:javascript
复制
dd if=test.txt of=test0.txt obs=1 seek=5

这些写入的内容就会从test0.txt的第六个字节开始写,而会保留前面的5个字节。

注意,由于这里我设置了ibs或者obs为1,所以skip和seek的单位都是字节,但是如果前面设置的是如1M,那么跳过的就是N兆了。

生成随机文件

还记得在《Linux字符设备文件》中提到的特殊字符文件吗?结合dd命令,我们可以生成一些随机内容的文件。

代码语言:javascript
复制
$ dd if=/dev/urandom of=temp.txt count=2

执行之后就会读取2个块大小的数据到temp.txt中。

磁盘读写测试

由于dd命令每次执行完成后都会显示其速度,因此可以利用它来测试当前的磁盘读写情况。 这里还有一个选项oflag=FLAGS用来设置一些读写方式,FLAG常见选项有:

  • direct 使用直接IO
  • nonblock 使用非阻塞IO
  • noatime 不更新访问时间
  • nocache 丢弃缓存
  • sync 读写一次就写到磁盘
  • fsync 最后要写到磁盘
代码语言:javascript
复制
$ dd if=/dev/urandom of=testfile count=100 oflag=sync
100+0 records in
100+0 records out
51200 bytes (51 kB, 50 KiB) copied, 0.0011526 s, 44.4 MB/s

总结

dd命令可用于文件拷贝,文件内容大小写转换,磁盘读写测试等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程珠玑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • dd命令
  • 将文件的内容进行大小写转换
  • 拷贝文件
  • 生成随机文件
  • 磁盘读写测试
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档