我如何知道 netcat 和 dd 是否正在运行?

我如何知道 netcat 和 dd 是否正在运行?

我在服务器 A 上运行(来源):

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

在服务器 B(目标)上:

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

我需要在某处看到一些进展吗?(服务器 A /dev/sda 是 50GB)

我已经等了 20 分钟,两者仍然在运行,我怎么知道它真的在传输数据/等等?

答案1

dd向进程发送USR1信号:

$ 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
$

答案2

您尝试过 pv 吗?http://www.ivarch.com/programs/pv.shtml

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

祝你好运!

答案3

找到你想要检查 I/O 的进程的 PID,在你的情况下,dd服务器 b 是一个不错的选择

cat /proc/<PID>/io

查看wchar应为字节写入值的值。

为了将来参考,您可以插入光伏进入其中一个(或两个)管道,它会告诉您有多少数据通过了它。

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

答案4

您可以使用它iftop来查看网络流量或iotopIO 使用情况。

相关内容