Que signifie exactement la commande pkill -USR1 -n -x dd?

12

J'utilise ddpour effectuer un transfert réseau d'une image disque vers une carte SD sur mon BeagleBone.

L'utilisation pkill -USR1 -n -x ddd'une connexion ssh à ce BeagleBone me donne une mise à jour de l'état du processus de transfert, ce qui est génial. Je suis simplement curieux de savoir comment cela fonctionne réellement afin que je puisse l'utiliser efficacement à l'avenir.

Après l'avoir lu, man pkillil ne m'a toujours pas expliqué comment pkill -USR1 -n -x ddfonctionnait pour me donner cette mise à jour de statut très utile.

user391339
la source

Réponses:

15

Il s'agit d'un comportement spécifique à dd. Depuis la ddpage de manuel:

L'envoi d'un signal USR1 à un processus «dd» en cours permet d'imprimer les statistiques d'E / S sur l'erreur standard, puis de reprendre la copie.

$ 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

-USR1dit pkilld'envoyer le USR1signal. -net ne -xsont que des filtres pour vous assurer que vous envoyez au bon processus ( -nenvoie au processus le plus récent et -xsignifie que le processus doit être nommé exactement dd)

Michael Mrozek
la source
2
Ce n'est que dans la version GNU de 'dd' (AFAIK). Un SIGUSR1 à 'dd' pour d'autres systèmes d'exploitation (par exemple AIX, HP-UX et Solaris) mettra fin au processus par défaut.
DarkHeart
@DarkHeart utilise SIGINFO (ou INFO) sur osx (probablement le même sur bsd)
akhan