Что конкретно означает команда pkill -USR1 -n -x dd?

12

Я использую ddдля передачи по сети образ диска на SD-карту на моем BeagleBone.

Использование pkill -USR1 -n -x ddв ssh-соединении с этим BeagleBone дает мне обновление статуса процесса передачи, и это здорово. Мне просто любопытно, как это на самом деле работает, поэтому я могу эффективно использовать его в будущем.

После прочтения man pkillон все еще не совсем объяснил, как pkill -USR1 -n -x ddработает, чтобы дать мне это очень полезное обновление статуса.

user391339
источник

Ответы:

15

Это поведение, характерное для dd. Со ddстраницы руководства :

Отправка сигнала USR1 в запущенный процесс 'dd' заставляет его печатать статистику ввода-вывода со стандартной ошибкой, а затем возобновляет копирование.

$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid

18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB) copied,  34.6279  seconds, 271 MB/s

-USR1говорит, pkillчтобы отправить USR1сигнал. -nи -xявляются просто фильтрами, чтобы убедиться, что вы отправляете правильному процессу ( -nотправляет новейшему процессу и -xозначает, что процесс должен быть назван точно dd)

Михаил Мрозек
источник
2
Это только в версии GNU 'dd' (AFAIK). По умолчанию значения SIGUSR1-dd для других операционных систем (например, AIX, HP-UX и Solaris) завершают процесс.
DarkHeart
@DarkHeart использовать SIGINFO (или INFO) на OSX (вероятно, то же самое на BSD)
Ахан