Как получить dd для печати статистики передачи в MacOS?

Для MacOS (Mavericks) я создаю оболочку script для сбора статистики передачи с течением времени для команды dd.

На странице руководства написано:

Если dd получает SIGINFO (см. аргумент состояния для stty (1)), текущие значения входного и выходного блоков будут записаны в стандартный вывод ошибки в том же формате, что и стандартное завершение сообщение.

Поэтому, как и в Linux, я пробовал:

kill -INFO <pid_of_dd>

Команда успешно завершила состояние 0, однако терминал, с которым связан процесс dd, не имеет информации о статистике в стандартном выпуске/стандартной ошибке.

Итак, каков правильный способ получить dd для печати статистики в своем выходе?

Ответ 1

Кажется, это работает для меня:

$ dd if=/dev/zero of=/dev/null bs=1k &
[1] 33990
$ kill -INFO 33990
4787784+0 records in
4787784+0 records out
4902690816 bytes transferred in 4.260769 secs (1150658706 bytes/sec)
$ kill -INFO 33990
8357846+0 records in
8357846+0 records out
8558434304 bytes transferred in 7.428820 secs (1152058392 bytes/sec)
$ kill 33990
$ ps
  PID TTY           TIME CMD
 1342 ttys000    0:00.02 -bash
 2290 ttys001    0:00.17 -bash
[1]+  Terminated: 15          dd if=/dev/zero of=/dev/null bs=1k
$

Ответ 2

Вы также можете нажать Ctrl + T на вкладке "Терминал", чтобы получить такое же поведение:

MacBook-Pro:~ $ dd if=~/source_image.dmg of=/dev/disk1
load: 0.87  cmd: dd 7229 uninterruptible 0.21u 3.91s
265809+0 records in
265808+0 records out
136093696 bytes transferred in 131.170628 secs (1037532 bytes/sec)
load: 0.99  cmd: dd 7229 uninterruptible 0.32u 5.89s
415769+0 records in
415768+0 records out
212873216 bytes transferred in 203.357068 secs (1046795 bytes/sec)

Ответ 3

Я также нашел через commandlinefu, что вы также можете сделать:

killall -INFO dd

Если вам нужно было запустить sudo dd, чтобы запустить dd, вы можете попробовать:

sudo killall -INFO dd

Кроме того, я запустил dd в фоновом режиме и с помощью nohup, поэтому, когда я запустил sudo killall -INFO dd и ничего не получил для вывода, мне пришлось помнить, что нужно пойти и посмотреть файл nohup.out, потому что здесь ответ был зарегистрирован.

Отлично работает на OS X Mavericks.