记录“时间”的输出时抑制命令的输出

时间:2018-12-04 17:19:40

标签: bash output stderr

我有一些以这种方式启动的命令:

./mycommand -arg=word

我测量执行时间并将输出写入文件:

/usr/bin/time -f "%K %e" ./mycommand -arg=word 2>file

但是,mycommand也有stderr输出。因此,file包含来自timemycommand的混合数据。如何抑制mycommand的输出并保存time的数据?

1 个答案:

答案 0 :(得分:2)

如果您的进程的性质足以使Shell启动不会过多地影响时间,则一种简单的方法是让Shell作为time的子进程运行该方向:

/usr/bin/time -f "%K %e" sh -c '"$0" "$@" >/dev/null 2>&1' ./mycommand -arg=word

我还建议使用time的bash内置版本,而不是外部版本,这样您就可以使用BashFAQ #32中记录的技巧:

TIMEFORMAT='%R' # replace for whatever is equivalent to your "%K %e"
timing=$(time { ./mycommand >/dev/null 2>&1; } 2>&1)