如何在使用 /usr/bin/time 命令时忽略程序输出?

4
我想知道程序运行的时间,所以我尝试了"/usr/bin/time ./program > /dev/null"。但很快我发现它将程序的输出显示到标准错误输出(stderr)。然后我尝试了"/usr/bin/time ./program > /dev/null 2>&1",但/usr/bin/time的输出没有出现。所以我的问题是,如何忽略程序的输出并保留time命令的输出。
非常感谢。
2个回答

7

使用-o标志将时间输出发送到除stderr之外的其他地方。例如,如果您仍希望在屏幕上看到它:

/usr/bin/time -o /dev/tty ./program >/dev/null 2>&1

或者,如果你非常需要在stdout上输出:

/usr/bin/time sh -c './program >/dev/null 2>&1'

或类似的。然而,现在您还测量外壳启动进程所需的时间,这可能是一个问题,也可能不是。


谢谢,但我正在使用另一个Python脚本来读取输出以了解所需时间。我可以使用这个命令吗? - Xhacker Liu
1
您可以将输出重定向到管道中,让其他程序从该管道读取。或者您的其他脚本可以简单地启动一个计时器,执行该程序,然后在程序完成时读取计时器吗? - TMN

1

(无法评论)

使用子shell可能更好:

/usr/bin/time ( ./program > /dev/null 2>&1 ) 2>&1

或者更好的是一个复合结构:

/usr/bin/time { ./program > /dev/null 2>&1; } 2>&1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接