Você não precisa de kill -USR1 para saber onde dd está. Você pode usar lsof para exibir a posição do seu descritor de arquivo de entrada. Obter saída parseable é um pouco abstruso, mas funciona. Observe que o 0 é o descritor do arquivo de entrada; se você passar um argumento if=… para dd , em vez de deixá-lo ler a partir da entrada padrão, dependendo da sua implementação de dd , ele poderá ler um descritor diferente.
lsof -a -o -p $! -d 0 -F o | sed -n 's/^o[0-9]*t//p'
No Linux, você pode obter essas informações diretamente de /proc .
</proc/$!/fdinfo/0 awk '$1 == "pos:" {print $2}'
Você também pode usar cat em vez de dd : muitas vezes é mais rápido e é menos propenso a erros .