如何将linux时间命令的结果redirect到某个文件

我正在运行以下命令(在Ubuntu上)

time wget 'http://localhost:8080/upLoading.jsp' --timeout=0 

并在命令行中得到结果

 real 0m0.042s user 0m0.000s sys 0m0.000s 

我已经尝试了以下内容:

 time -a o.txt wget 'http://localhost:8080/upLoading.jsp' --timeout=0 

并得到以下错误

 -a: command not found 

我想要将结果redirect到某个文件。 我怎样才能做到这一点?

您可以使用>字符将任何命令的stdout输出指向文件。 要将输出附加到文件,请使用>>

请注意,除非明确完成,否则输出到stderr仍将转到控制台。 将stderrstdout指向相同的输出流

  command 2>&1 outfile.txt (with bash) 

要么

  command >& outfile.txt (with t/csh) 

如果你正在使用bash 所有关于重定向将给你更多的细节和控制重定向。

-a只能被时间二进制(/ usr / bin / time)所理解,当使用的时候你使用的是bash内置版本,它不处理-a选项,因此试图把它作为命令运行。

 /usr/bin/time -o foo.txt -a wget 'http://localhost:8080/upLoading.jsp' --timeout=0 

检查man time ,我猜你需要的是

 time -o o.txt -a ... 

(注意你需要-a和-o)。

[编辑:]如果你是在bash,你还必须小心写

 /usr/bin/time 

(查看manpage的解释)

 \time 2> time.out.text command \time -o time.out.text command 

这个答案基于之前的评论。 它被测试它的工作。 \ over /usr/bin/的优点是你不必知道time的安装目录。

这些答案也只是捕捉时间,而不是其他的输出。

从GNU到GNU的time恰好是输出到stderr ,如果你想把它重定向到文件,你可以使用–output = PATH参数的time

http://unixhelp.ed.ac.uk/CGI/man-cgi?time

如果你想将stdout重定向到某个文件,你可以使用> filename来创建文件并填充它或者>> filename来在最初的命令之后附加到某个文件。

如果你想自己重定向stderr ,你可以使用$ command >&2 your_stderr_output

尝试使用/usr/bin/time因为许多shell有自己的time执行,可能会或可能不支持/usr/bin/time

所以改变你的命令

  /usr/bin/time -a -o foo.txt wget .... 

你的郎怎么样?

 $ time -ao o.txt echo 1 bash: -ao: コマンドが見つかりませんreal 0m0.001s user 0m0.000s sys 0m0.000s $ export|grep LANG declare -x LANG="ja_JP.utf8" $ LANG=C time -ao o.txt echo 1 1 $ cat o.txt 0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 1984maxresident)k 0inputs+0outputs (0major+158minor)pagefaults 0swaps 

尝试:

 command 2> log.txt 

并且可以在另一个控制台窗口中看到“命令”的实时输出:

 tail -f log.txt 

如果要重定向输出,可以使用>来完成。

例如:

 time wget 'http://localhost:8080/upLoading.jsp' --timeout=0 > output.txt 2>&1 

2>&1表示将STDERR重定向到同一个文件。

这个命令将擦除所有的output.txt文件,并用你的输出创建一个新的文件。 如果使用>> ,则会将输出追加到任何现有的output.txt文件的末尾。 如果它不存在,它将创建它。