我发现一个shell命令可以发送大数据到目标主机:
dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'
我想我可以用它来testingnetworking带宽,但是它不能显示进程状态。
那么如果你把这件事整理一下,
time sh -c "dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'"
这将给你的时间完成转移。 除以时间传输的字节,这就是你的吞吐量。
对于一个进度表,你可以使用光伏 ,这消除了使用时间的需要(1):
dd if=/dev/zero bs=1024 count=10000 | pv --size 10240000 | ssh user@ip 'cat > /dev/null'
这将给你一个很好的进度计,尤其是如果你加载传输的总大小的大小参数。
如果你想要做的是testingnetworking带宽,那么有更直接的方法。
尝试使用ttcp或其替代品: nuttcp
[tla ~]$ nuttcp -S michael@challenger:~$ nuttcp -4 -r tla 41.5574 MB / 10.46 sec = 33.3336 Mbps 2 %TX 4 %RX michael@challenger:~$ nuttcp -4 -t tla 15.4347 MB / 10.13 sec = 12.7821 Mbps 1 %TX 2 %RX 0 retrans 3.30 msRTT
发送SIGUSR1到dd将导致它输出它的进度。 您可以计算后续调用之间的差异,以获得大致的费率。
如果你真的想testing连通性,你可以使用iperf 。
除此以外,
创build一个100MB的testing文件
dd if=/dev/urandom of=./test.bin bs=1024000 count=100
然后scp这个文件来testing上传性能
scp test.bin xxxx:.
或者从远端scp来testing你的下载性能
通常最好使用iperf来testing带宽,因为它没有encryption开销,但是您可以在dd和ssh之间插入pv以实时查看传输速度:
dd if=/dev/random | pv | ssh somehost 'cat > /dev/null'
另外,在FreeBSD上,您可以通过按Ctrl + T将SIGINFO发送到dd,之后会显示一些统计数据(包括速度)