这是 OSX 的情况。当我在终端中运行它时
scottcarlson$ sudo dd if=Downloads/CentOS-7-x86_64-Everything-1511.iso of=/dev/disk2 2> Desktop/out.txt
然后这个在另一个
tail -f Desktop/out.txt
Ctlt它仅在我按第一个终端时更新日志dd
。这是因为性质吗dd
?
我不知道它到底是如何写入设备的,但是对于进程来说,休息一下并写入日志是否要求太高?
答案1
仅当我在第一个终端中使用 dd 按 Ctlt 时,它才会更新日志。这是因为 dd 的性质吗?
是的。它的本质是dd
当接收到给定信号时输出其当前状态。在大多数操作系统下,此信号是SIGUSR1
标准信号,但在 OS X 上,它使用名为 的非标准信号SIGINFO
。此外,OS X 有一个tty
驱动程序设置,允许使用组合键发送特定信号,CtrlT就像在所有操作系统上CtrlC发送一样。SIGQUIT
我不知道它到底是如何写入设备的,但是对于进程来说,休息一下并写入日志是否要求太高?
您正是要求它使用快捷方式执行此操作。如果您想要定期自动更新,没有什么会禁止您执行像这样的简单 shell 循环:
while kill -INFO $(pgrep dd); do sleep 5; done
这假设pgrep
在 OS X 上可用。否则,选择命令pid
的dd
并将其用作kill
第二个参数。
答案2
您看到的ctlt是正在运行的进程信息的摘要,而不是dd
输出。
dd
不输出任何进度信息,与您预期的不同。
如果您想从另一个终端窗口查看实际进度,请查看输出文件大小的变化。在这种情况下,您正在写入原始磁盘,因此耐心可能是您最好的朋友。
答案3
在 OS-X 上,如果您运行,stty -a
您会看到这^T
是以下组合键status
% stty -a | grep '\^T'
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
从man dd
If dd receives a SIGINFO (see the status argument for stty(1)) signal,
the current input and output block counts will be written to the standard
error output in the same format as the standard completion message. If
两者一起意味着在dd
运行时,点击^T
将导致写入摘要显示。