在记录"time"输出时抑制命令的输出



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

./mycommand -arg=word

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

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

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

如果您的流程的性质是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)

相关内容

  • 没有找到相关文章

最新更新