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