如果我在文件系统上有一个文件,我可以用 dd 做这样的事情:
dd if=/my/filewithaheader.bin bs=32k skip=1 | gunzip | tar tvf
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试这样的事情:
./commandthatputsstuffonstdout | dd bs=32k skip=1 | gunzip | tar tvf
Run Code Online (Sandbox Code Playgroud)
我收到错误:
dd: 'standard input': cannot skip to specified offset。
我该如何解决这个问题,可以用 dd 来完成,还是有另一个我可以使用的 unix 命令
克隆磁盘时有没有办法让Linux预读?我使用名为"dd"的程序来克隆磁盘.我最后一次这样做,似乎操作系统正在阅读然后写作,但从来没有在同一时间.理想情况下,如果源磁盘可以跟上,目标磁盘将不断等待,而不是等待.
更新:我通常在克隆时选择较大的块大小(例如16M或32MB).
我测试了这个:
strace python -c "fp = open('/dev/urandom', 'rb'); ans = fp.read(65600); fp.close()"
Run Code Online (Sandbox Code Playgroud)
具有以下部分输出:
read(3, "\211^\250\202P\32\344\262\373\332\241y\226\340\16\16!<\354\250\221\261\331\242\304\375\24\36\253!\345\311"..., 65536) = 65536
read(3, "\7\220-\344\365\245\240\346\241>Z\330\266^Gy\320\275\231\30^\266\364\253\256\263\214\310\345\217\221\300"..., 4096) = 4096
Run Code Online (Sandbox Code Playgroud)
对于具有不同请求字节数的读取系统调用有两个调用.
当我使用dd命令重复相同时,
dd if=/dev/urandom bs=65600 count=1 of=/dev/null
Run Code Online (Sandbox Code Playgroud)
只使用请求的确切字节数触发一个读取系统调用.
read(0, "P.i\246!\356o\10A\307\376\2332\365=\262r`\273\"\370\4\n!\364J\316Q1\346\26\317"..., 65600) = 65600
Run Code Online (Sandbox Code Playgroud)
我没有任何可能的解释来搜索这个.这与页面大小或任何Python内存管理有关吗?
为什么会这样?
我正在编写Powershell脚本来制作驱动器的原始副本,但我一直无法找到一种方法来完成此操作。
在Linux上,我将使用'dd'执行此复制。
有几种工具可以在Windows上执行此操作,但是我无法直接从命令行进行控制。(都具有GUI界面)
是否有通过Powershell制作驱动器物理副本的方法?
谢谢。
当我在我的Ubuntu终端中运行时:
sudo dd if=/dev/sda of=~/file bs=8k count=200k; rm -f ~/file
Run Code Online (Sandbox Code Playgroud)
它工作正常.
如果我通过Pythons运行它subprocess.Popen():
output, err = subprocess.Popen(['sudo', 'dd', 'if=/dev/' + disk, 'of=~/disk_benchmark_file', 'bs=8k', 'count=200k'], stderr=subprocess.PIPE).communicate()
print err
Run Code Online (Sandbox Code Playgroud)
它不起作用.我得到的错误是:
dd:无法打开'〜/ disk_benchmark_file':没有这样的文件或目录
如果我在改变Popen()通话的波浪~来/home/user,然后它的作品!
为什么会那样?对我来说更重要的是:我怎样才能让它发挥作用? 我不知道生产中的用户名是什么.
Python 中最有效、最可靠的分割扇区的方法是什么:
数量:101(当然可能会有所不同) chunk1:1 到 30 chunk2:31 到 61 chunk3:62 到 92 chunk4:93 到 101
流程:复制扇区 1 到 30,跳过块 1 中的扇区,并从扇区 31 开始复制 30 个扇区。依此类推...
我使用模块和基本数学以“手动”方式解决了这个问题,但是必须有一个函数吗?
谢谢。
进入/proc/PID/maps我可以看到一些缓冲区映射到内核模块的内存:
44a00000-44b00000 rwxs 00000000 00:01 XXXX /dev/my_module
我知道它是逻辑地址,我想用dd?
dd 需要获取物理内存地址,我如何计算这个缓冲区的物理地址来转储它?
我对 Linux 很陌生。我正在阅读这篇关于使用 dd 命令将 ISO 刻录到 USB 驱动器的文章。我不明白关于 fdatasync 的这一部分。 https://www.howtogeek.com/414574/how-to-burn-an-iso-file-to-a-usb-drive-in-linux/
conv=fdatasync: conv 参数指示 dd 在将输入文件写入输出设备时如何转换输入文件。dd 在写入 USB 驱动器时使用内核磁盘缓存。fdatasync 修饰符确保在创建过程被标记为已完成之前正确且完全地刷新写入缓冲区。
我不明白写缓冲区和刷新是什么意思。不仅如此,我认为他们的意思是,他们不是缓存要写入的信息,而是立即将缓冲区传输到 USB 驱动器。但我可能是错的。
我需要知道如何dd()在 Laravel 项目中正确使用该函数。
例如 - 我有任务来调试我的项目(PHP /Laravel)中的一些代码和功能,并且我总是需要很长时间才能找到问题所在的确切文件或文件夹或代码。
我的导师说使用dd()functiom 更快地找到东西(但出于学习目的,他没有向我详细解释如何实际使用它并说要自己找出答案),但说我应该从 Route 开始(我们使用背包作为对我们的项目来说很好)。因此,在找到路线(custom.php 文件)后,哪个控制器连接到我所需的路线,接下来我应该做什么?
我如何实现该dd()功能(或者正如我的导师所说的dd('call here')功能)以快速找到我应该寻找的内容来解决我的问题并完成我的任务?
我应该在哪里写这个dd()以及如何写?
例如,我有:
public function create(): View
{
return view('xxxxxx. \[
//
//
\]);
}
Run Code Online (Sandbox Code Playgroud)
如果我把dd()代码放在任何地方,我的 URL 中就会收到错误消息。
我知道我可以像这样用 0x0 填充整个磁盘:
dd if=/dev/zero of=/dev/sda bs=4k conv=notrunc
Run Code Online (Sandbox Code Playgroud)
有没有办法用我选择的字符填充整个磁盘?
dd ×10
linux ×4
python ×3
bash ×1
block-device ×1
laravel ×1
math ×1
mmap ×1
parallel-io ×1
php ×1
popen ×1
powershell ×1
stdout ×1
storage ×1
subprocess ×1
system-calls ×1
windows ×1