Kir*_*lev 14 command-line bash
我正在使用 dd 命令从iso文件创建一个可启动的USB:
sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M
Run Code Online (Sandbox Code Playgroud)
按回车后它会暂时退出并给我:
915+0 records in 915+0 records out 959447040 bytes (959 MB) copied,
0.539375 s, 1.8 GB/s
Run Code Online (Sandbox Code Playgroud)
所以这就像在后台运行,因为我可以看到闪存驱动器正在工作。最终它将停止复制,我可以成功移除驱动器,但问题是为什么 dd 命令不等待复制完成。为什么它在后台运行。我怎样才能让它等待?
Gil*_*il' 24
尽管普遍认为,它dd
是一个非常普通的命令,但它并不比cat
或低级cp
。您的命令从磁盘缓存读取并像任何其他命令一样写入磁盘缓冲区。
为了确保数据完全写入物理介质,您需要调用sync
. 该命令sync
将所有输出缓冲区刷新到磁盘。当sync
命令返回时,数据已完全写入。
sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M; sync
Run Code Online (Sandbox Code Playgroud)
大多数情况下,您不需要调用sync
,因为卸载文件系统执行相同的工作。当umount
命令返回时,或者当您在单击“弹出”后收到确认消息时,缓冲区已写入磁盘。在这里,您直接写入磁盘而不通过安装的文件系统,因此您需要显式刷新缓冲区。
请注意dd
,您可以使用tee
. 这有两个优点:由于打字错误而反转源和目标的风险较小,而且速度可能稍快一些。
<~/Desktop/ubuntu.iso sudo tee /dev/sdx >/dev/null; sync
Run Code Online (Sandbox Code Playgroud)
vy3*_*y32 16
尝试这个:
sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx conv=fdatasync bs=1m
Run Code Online (Sandbox Code Playgroud)
该conv=fdatasync
通知dd
使用特殊的选项,以确保数据被写入到物理设备。
归档时间: |
|
查看次数: |
33185 次 |
最近记录: |