¿Qué significa exactamente el comando pkill -USR1 -n -x dd?

12

Estoy utilizando ddpara hacer una transferencia de red de una imagen de disco a una tarjeta SD en mi BeagleBone.

Usar pkill -USR1 -n -x dduna conexión ssh con este BeagleBone me da una actualización del estado del proceso de transferencia, lo cual es genial. Tengo curiosidad por saber cómo funciona realmente para poder usarlo de manera efectiva en el futuro.

Después de leerlo man pkill, todavía no explicaba totalmente cómo pkill -USR1 -n -x ddfunciona darme esta actualización de estado muy útil.

usuario391339
fuente

Respuestas:

15

Este es un comportamiento específico para dd. Desde la ddpágina del manual:

El envío de una señal USR1 a un proceso 'dd' en ejecución hace que imprima las estadísticas de E / S al error estándar y luego reanude la copia.

$ 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

-USR1le dice pkillque envíe la USR1señal. -ny -xson solo filtros para asegurarse de que envía al proceso correcto ( -nenvía al proceso más nuevo y -xsignifica que el proceso debe nombrarse exactamente dd)

Michael Mrozek
fuente
2
Esto es solo en la versión GNU de 'dd' (AFAIK). Un SIGUSR1 a 'dd' para otros sistemas operativos (por ejemplo, AIX, HP-UX y Solaris) finalizará el proceso de forma predeterminada.
DarkHeart
@DarkHeart usa SIGINFO (o INFO) en osx (probablemente lo mismo en bsd)
akhan el