2012-06-18 22 views
10

我运行下面的命令(在Ubuntu)如何Linux的time命令的结果重定向到一些文件

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 

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

+1

也许你正在使用bash,它有'时间内置命令。 (请参阅'help time')你的命令应该使用'/ usr/bin/time'来正常工作(发现时间的二进制文件在哪个时间使用)。考虑到这一点,你必须使用:'time -o out.txt -a ...' – Lourenco

回答

3

您可以使用>字符任何条命令的stdout输出定向到一个文件中。 要追加输出到文件中使用>>

需要注意的是,除非明确地做,输出到stderr还是会去到控制台。直接stderrstdout相同的输出流使用

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

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

如果您正在使用bashAll about redirection工作会给你更多的细节和有关重定向控制。

+3

(时间wget ...)2> out.txt正在完善。谢谢 – Julias

+0

正如我上面评论的那样,考虑'/ usr/bin/time'。所以,使用类似'/ usr/bin/time -o outfile.txt -a ...' – Lourenco

0

究竟来自GNU的time写入它的输出标准错误,如果你想重定向到文件,你可以使用--output =的time

路径参数请参阅本http://unixhelp.ed.ac.uk/CGI/man-cgi?time

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

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

6

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

time -o o.txt -a ... 

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

[编辑:如果你是在bash,还必须照顾到写

/usr/bin/time 

(检查说明手册页)

+0

的东西仍然不能正常工作:在我的机器上找不到'-o:command not'。 –

+1

检查亚当的评论(http://stackoverflow.com/a/11082413/384689),这可能是解决方案 – claasz

+0

嗯,我看不到它...所以我编辑我的答案。希望这有助于 – claasz

-1

你可以做到这一点与>如果你想重定向输出。

例如:

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

2>&1说要STDERR重定向到同一个文件。

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

10

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

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

-a和-o都没有工作。解决方案是2> foo.txt – Julias

+2

我相信这实际上是正确的答案。在调用时间时,请调用/ usr/bin/time,而不是使用不支持高级选项的shell内置函数。 – mattismyname

+0

当然,这是正确的答案。 – Lourenco

0

尝试使用/usr/bin/time因为许多炮弹都有自己的执行time可能会或可能不支持相同的标志/usr/bin/time

因此改变你的命令

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

我在问题中添加了此评论来证明它。 – Lourenco

1
\time 2> time.out.text command 

\time -o time.out.text command 

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

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

0

你的LANG怎么样?

$ 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 
0

尝试:

command 2> log.txt 

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

tail -f log.txt 
相关问题