如何在Linux中将time命令的输出重定向到文件?

关于在Linux上计时程序的一个小问题:time命令允许测量程序的执行时间:


[ed@lbox200 ~]$ time sleep 1


real    0m1.004s

user    0m0.000s

sys     0m0.004s

哪个工作正常。但是,如果我尝试将输出重定向到文件,它将失败。


[ed@lbox200 ~]$ time sleep 1 > time.txt


real    0m1.004s

user    0m0.001s

sys     0m0.004s


[ed@lbox200 ~]$ cat time.txt 

[ed@lbox200 ~]$ 

我知道还有其他一些带有选项-o的时间实现,但是我的问题是关于没有那些选项的命令。


有什么建议么 ?


德玛西亚99
浏览 1348回答 3
3回答

慕森卡

将time您要计时的命令和命令放在一组括号中。例如,以下时间ls将的结果ls和计时的结果写入outfile:$ (time ls) > outfile 2>&1或者,如果您想将命令的输出与捕获的输出分开time:$ (time ls) > ls_results 2> time_results

蝴蝶不菲

尝试{ time sleep 1 ; } 2> time.txt将“时间”的STDERR和您的命令组合到time.txt中或使用{ time sleep 1 2> sleep.stderr ; } 2> time.txt将来自“睡眠”的STDERR放入文件“ sleep.stderr”,只有来自“时间”的STDERR进入“ time.txt”

12345678_0001

如果您关心命令的错误输出,则可以在仍使用内置时间命令的情况下像这样将它们分开。{ time your_command 2> command.err ; } 2> time.log要么{ time your_command 2>1 ; } 2> time.log如您所见,该命令的错误进入了一个文件(因为stderr用于time)。遗憾的是,您无法将其发送到另一个句柄(如3>&2),因为该句柄将不再存在{...}就是说,如果您可以使用GNU时间,请执行@Tim Ludwinski所说的。\time -o time.log command
打开App,查看更多内容
随时随地看视频慕课网APP