Linux dd 命令
Linux dd 命令用于读取、转换并输出数据。dd 可以从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
语法:
dd if=/path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks
参数说明:
if=file 输入文件名,缺省为标准输入。 of=file 输出文件名,缺省为标准输出。 ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。 obs=bytes 一次写 bytes 个字节(即一个块大小为 bytes 个字节)。 bs=bytes 同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。 cbs=bytes 一次转换 bytes 个字节,即转换缓冲区大小。 skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制。 seek=blocks 从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。 count=blocks 仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。 conv=conversion[,conversion...] 用指定的参数转换文件。 iflag=FLAGS 指定读的方式FLAGS,参见“FLAGS参数说明” oflag=FLAGS 指定写的方式FLAGS,参见“FLAGS参数说明”
conv参数说明:
ascii 转换 EBCDIC 为 ASCII。
ebcdic 转换 ASCII 为 EBCDIC。
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
FLAGS参数说明:
append -append mode (makes sense only for output; conv=notrunc sug-gested) direct 读写数据采用直接IO方式; directory 读写失败除非是directory; dsync 读写数据采用同步IO; sync 同上,但是针对是元数据 fullblock 堆积满block(accumulate full blocks of input )(iflag only); nonblock 读写数据采用非阻塞IO方式 noatime 读写数据不更新访问时间
Time + dd 测试磁盘读写速度:
1、time 有计时作用,dd 用于复制,从 if 读出,写到 of ; 2、if=/dev/zero(产生字符)不产生IO,因此可以用来测试"写速度"; 3、of=/dev/null(黑洞)不产生IO,因此可以用来测试"读速度"; 4、将/tmp/var 拷贝到 /var 则同时测试了读写速度; 5、bs 是每次读或写的大小,即一个块的大小,count 是读写块的数量;
测试磁盘写:
time dd if=/dev/zero of=/test.dbf bs=4k count=100000
/dev/zero 是一个伪设备,只产生空字符流,不会产生IO,所以 IO 都会集中在 of 文件中,of 文件只用于写,所以这个命令用于测试磁盘写能力。结尾添加oflag=direct将跳过内存缓存,添加oflag=sync将跳过hdd缓存
测试磁盘读:
time dd if=/dev/sdb of=/dev/null bs=4k
测试读写:
time dd if=/dev/sdb of=/testrw.dbf bs=4k (对/dev/sdb是读,对/testrw.dbf是写,若在同一个磁盘下,则测试磁盘的读写)
测试纯写入性能:
dd if=/dev/zero of=test bs=8k count=10000 oflag=direct
测试纯读取性能:
dd if=test of=/dev/null bs=8k count=10000 iflag=direct
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」