![Ctl + tを押したときにのみddが出力されるのはなぜですか? [コピー]](https://linux33.com/image/91036/Ctl%20%2B%20t%E3%82%92%E6%8A%BC%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E3%81%AE%E3%81%BFdd%E3%81%8C%E5%87%BA%E5%8A%9B%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
これは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
使用して特定の信号を送信できるドライバ設定があります。CtrlTCtrlCSIGQUIT
デバイスに正確に書き込む方法はわかりませんが、プロセスにしばらく休んでログに書き込むように要求するのはあまりにも無理ですか?
ショートカットを使用して正確にそのタスクを実行するように依頼しています。定期的に自動更新が必要な場合は、次の単純なシェルループを実行するのを防ぐ方法はありません。
while kill -INFO $(pgrep dd); do sleep 5; done
これはpgrep
OS Xで利用可能であると仮定します。それ以外の場合は、コマンドを選択してpid
それを2番目の引数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
表示されます。