O que o comando pkill -USR1 -n -x dd significa exatamente?

12

Estou usando ddpara fazer uma transferência de rede de uma imagem de disco para um cartão SD no meu BeagleBone.

O uso pkill -USR1 -n -x ddde uma conexão ssh neste BeagleBone fornece uma atualização de status do processo de transferência, o que é ótimo. Estou curioso para saber como ele está realmente funcionando, para que eu possa usá-lo efetivamente no futuro.

Depois de ler, man pkillele ainda não explicava totalmente como pkill -USR1 -n -x ddestá funcionando para me dar essa atualização de status muito útil.

user391339
fonte

Respostas:

15

Esse é um comportamento específico para dd. Na ddpágina do manual:

O envio de um sinal USR1 para um processo 'dd' em execução faz com que imprima as estatísticas de E / S para erro padrão e depois retome a cópia.

$ 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

-USR1diz pkillpara enviar o USR1sinal. -ne -xsão apenas filtros para garantir que você envie para o processo correto ( -nenvia para o processo mais recente e -xsignifica que o processo deve ser nomeado exatamente dd)

Michael Mrozek
fonte
2
Isso é apenas na versão GNU do 'dd' (AFAIK). Um SIGUSR1 para 'dd' para outros sistemas operacionais (por exemplo, AIX, HP-UX e Solaris) encerrará o processo, por padrão.
DarkHeart 20/10
@DarkHeart usar SIGINFO (ou INFO) no OSX (provavelmente o mesmo em BSD)
Akhan