【发布时间】:2017-03-13 10:45:39
【问题描述】:
直到今天,我总能找到我所有 bash 问题的答案。但现在我卡住了。我正在测试在 LSI 9265 上运行的 20TB RAID6 配置。
我编写了脚本来从 /dev/urandom 创建文件,并且我正在创建第二个脚本来从具有两个插件的所有文件中计算 md5。 一种是使用time命令计算md5sum执行时间 其次是使用 pv 命令显示每个 md5sum 命令的进度
我的命令如下所示:
filename="2017-03-13_12-38-08"
/usr/bin/time -f "real read %E" pv $filename | md5sum | sed "s/-/$filename /"
这是示例终端打印输出:
/usr/bin/time -f "real read %E" pv $i | md5sum | sed "s/-/$i/"
1GiB 0:00:01 [ 551MiB/s] [==================================================================================================>] 100%
real read 0:01.85
f561af8cc0927967c440fe2b39db894a 2017-03-13_12-38-08
我想将它记录到文件中。我使用 2>&1、使用 tee、使用括号的所有尝试都失败了。我知道 pv 使用 stdErr 但这无助于找到解决方案。我只能赶上“f561af8cc0927967c440fe2b39db894a 2017-03-13_12-38-08_done” 这还不够。
【问题讨论】:
-
您能否向我们展示您实际尝试通过管道传输到文件的命令?这些应该可以工作。
-
这些是我试图将输出放入文件的命令: /usr/bin/time -f "real read %E" pv $filename | md5sum | sed "s/-/$filename /" > output 2>&1 我刚刚找到了解决方案 (time pv -f $i | md5sum | sed "s/-/$i/") 2>&1 | tee output.log 或等效但不打印到终端仅文件 output.log (time pv -f $i | md5sum | sed "s/-/$i/") > output.log 2>&1
-
你已经正确地发现了问题,即你需要将你想要管道的命令包装在括号中,否则你只会得到最后一个命令的输出。您应该将其发布为下面的答案并将其标记为这样!