读取dd命令的输出
reading the output from dd command
我正在使用脚本测试我的网络速度,为了计算平均速度,我需要读取每个 运行 的速度。
命令:
dd if=InputFile of=OutputFile bs=4096k
输出:
64+0 records in
64+0 records out
268435456 bytes (268 MB) copied, 1.8519 s, 145MB/s
问题是 dd 命令总是将输出打印到标准输出。我可以设法通过管道传输或将其写入文件,这样我就可以阅读 145MB/s
我试过以下几行:
dd if=InputFile of=OutputFile bs=4096k >> log.txt
- 创建一个空文件并打印到标准输出
dd if=InputFile of=OutputFile bs=4096k | grep *
- 失败
echo `dd if=InputFile of=OutputFile bs=4096k` # fails
你的问题是 dd 不是 打印输出到标准输出,而是 stderr.
您必须使用 2> ...
进行重定向,例如
dd if=/dev/zero of=/dev/null count=1 2> >( grep copied )
您还可以获取 dd 进程的 PID 并设置手表以根据您的喜好发送 USR1 信号。然后将其重定向到一个文件!!!!
我正在使用脚本测试我的网络速度,为了计算平均速度,我需要读取每个 运行 的速度。
命令:
dd if=InputFile of=OutputFile bs=4096k
输出:
64+0 records in
64+0 records out
268435456 bytes (268 MB) copied, 1.8519 s, 145MB/s
问题是 dd 命令总是将输出打印到标准输出。我可以设法通过管道传输或将其写入文件,这样我就可以阅读 145MB/s
我试过以下几行:
dd if=InputFile of=OutputFile bs=4096k >> log.txt
- 创建一个空文件并打印到标准输出
dd if=InputFile of=OutputFile bs=4096k | grep *
- 失败
echo `dd if=InputFile of=OutputFile bs=4096k` # fails
你的问题是 dd 不是 打印输出到标准输出,而是 stderr.
您必须使用 2> ...
进行重定向,例如
dd if=/dev/zero of=/dev/null count=1 2> >( grep copied )
您还可以获取 dd 进程的 PID 并设置手表以根据您的喜好发送 USR1 信号。然后将其重定向到一个文件!!!!