Como posso saber se o netcat & dd está funcionando?

5

Estou rodando no servidor A (Source):

dd bs=16M if=/dev/sda|bzip2 -c|nc serverB.example.net 19000

No servidor B (Destino):

nc -l -p 19000|bzip2 -d|dd bs=16M of=/dev/sdb

Preciso ver algum progresso em algum lugar? (A / dev / sda do servidor é 50GB)

Estou esperando há 20 minutos, mas os dois ainda estão em execução. Como posso saber se realmente está transferindo dados / etc?

    
por soulSurfer2010 08.03.2011 / 10:16

7 respostas

8

Envie o dd process a USR1 signal:

$ dd if=/dev/urandom of=/dev/null &
[1] 977
$
$ kill -USR1 977
274647+0 records in
274646+0 records out
140618752 bytes (141 MB) copied, 17.3286 s, 8.1 MB/s
$
    
por 08.03.2011 / 11:13
7

¿você já experimentou pv? link

dd bs=16M if=/dev/sda|bzip2 -c| pv | nc serverB.example.net 19000
nc -l -p 19000| pv | bzip2 -d| dd bs=16M of=/dev/sdb

boa sorte!

    
por 08.03.2011 / 11:14
3

Verifique a página man do dd no seu sistema operacional, mas deve suportar um sinal USR1 que lhe dará uma verificação de progresso. Se você conhece o pid de seu processo, apenas envie um "kill -USR1 $ pid" e ele mostrará o quão longe ele está.

    
por 08.03.2011 / 10:56
3

Encontre o PID do processo que você deseja verificar o I / O para no seu caso o dd no servidor b seria um bom lugar para procurar então

cat /proc/<PID>/io

veja o valor para wchar , que deve ser o valor escrito dos bytes.

Para referência futura, você pode inserir pv em um (ou ambos) de os pipes e ele informará quantos dados foram transmitidos.

dd bs=16M if=/dev/sda|bzip2 -c|pv|nc serverB.example.net 19000
225MB 0:04:48 [ 799kB/s] [                    <=>                            ]
    
por 08.03.2011 / 11:05
1

Você pode usar iftop para ver o tráfego da rede ou iotop para ver o uso do IO.

    
por 08.03.2011 / 10:45
0

watch -d -n 1 ifconfig no servidor B. Ele realçará todo o tráfego recebido (pacotes / bytes RX). Não conte com a precisão dos valores se você estiver usando uma distribuição de 32 bits (você ainda pode ver se ainda está funcionando).

    
por 08.03.2011 / 10:46
0

As versões mais recentes de dd no GNU-Coreutils (> 8.24) agora incluem um argumento status , para evitar todos os pv e USR1 sinal de hacks:

dd if=/dev/urandom of=/dev/null status=progress

Se estiver em um Mac:

brew install coreutils
# All commands have been installed with the prefix 'g'
gdd if=/dev/urandom of=/dev/null status=progress
    
por 16.08.2018 / 01:46

Tags