Use and capture of the "time" command
Lennart Sorensen
lsorense-1wCw9BSqJbv44Nm34jS7GywD8/FfD2ys at public.gmane.org
Mon Nov 15 23:09:50 UTC 2010
On Mon, Nov 15, 2010 at 02:18:28PM -0800, Tyler Aviss wrote:
> I'm trying to time some commands and dump the output to a running
> log. For some reason unknown to me, the time command always seems to
> spit directly to my terminal, even when I'm redirecting stdout and
> stderr.
>
> Anyone know what's going on. For example, this should be dumping to a
> file, not my screen like...
>
>
> root at linux: ~# time dd if=/dev/zero bs=1k count=5000 > /tmp/foo.txt 2>&1
>
> real 0m0.037s
> user 0m0.000s
> sys 0m0.040s
>
> Perhaps I'm just short of caffeine and doing something incredibly
> dumb, but it doesn't seem right
>
> I checked the man-page and it says any arguments after the command
> following "time" are considered arguments of said command, so I
> thought perhaps it was interpreting it like
>
> time $( dd if=/dev/zero bs=1k count=5000 > /tmp/foo.txt 2>&1 )
>
> In that case, I should have be able to override using...
>
> echo $( time dd if=/dev/zero bs=1k count=5000 > /tmp/foo.txt 2>&1 )
>
> But I get the same thing. output to the screen and nada in /tmp/foo.txt
> Anyone know what's up with this?
Use /usr/bin/time instead. time is a bash builtin and hence not quite
affected by normal shell commands.
Or try:
(time dd if=/dev/zero bs=1k count=5000) > /tmp/foo.txt 2>&1
Since time is part of the subshell, the output will be part of that
subshell's output and hence redirectable by your current shell.
--
Len Sorensen
--
The Toronto Linux Users Group. Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists
More information about the Legacy
mailing list