Terminal

當我按 Ctl+t 時,為什麼 dd 只輸出?

  • July 23, 2016

這是與 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

它只在我按下Ctl``t第一個終端時更新日誌dd。這是因為天性dd嗎?

我不確切知道它是如何寫入設備的,但是對於該過程來說是否需要休息一下並寫入日誌?

它僅在我使用 dd 在第一個終端中按 Ctlt 時更新日誌。這是因為dd的性質嗎?

是的。它的本質是在dd接收到給定信號時輸出其目前狀態。在大多數作業系統下,這個信號是SIGUSR1一個標准信號,但在 OS X 上,它使用一個名為 的非標准信號SIGINFO。此外,OS X 有一個tty驅動程序設置,允許使用組合鍵發送該特定信號Ctrl``T,就像在所有作業系統上Ctrl``C發送一樣。SIGQUIT

我不確切知道它是如何寫入設備的,但是對於該過程來說是否需要休息一下並寫入日誌?

您正是在要求它使用快捷方式來做到這一點。如果您想要定期自動更新,沒有什麼可以阻止您執行類似的簡單 shell 循環:

while kill -INFO $(pgrep dd); do sleep 5; done

這假設pgrep在 OS X 上可用。否則,選擇pid您的dd命令並將其用作kill第二個參數。

引用自:https://unix.stackexchange.com/questions/297707