views:

31

answers:

1

I want to know how long a program running, so I tried "/usr/bin/time ./program > /dev/null". But soon I found it displays program's output to stderr. I tried "/usr/bin/time ./program > /dev/null 2>&1" then, but /usr/bin/time's output not appear. So my question is, how to ignore program's output, and keep time's output.

Thanks a lot.

+3  A: 

Use the -o flag to send the output from time to something else then stderr. For example, if you still want it on screen:

/usr/bin/time -o /dev/tty ./program >/dev/null 2>&1

Or, if you want output on stdout very badly:

/usr/bin/time sh -c './program >/dev/null 2>&1'

or similar. However, now you're also measuring the shell's time to start the process, which may or may not be a problem.

larsmans
Thanks, but I'm using another python script to read the output to know how long it takes. Can I use this command?
Xhacker Liu
Yes, see edited answer.
larsmans
You could redirect the output to a pipe and have your other program read from that. Or can your other script simply start a timer, exec the program, then read the timer when the program completes?
TMN
It works. Many thanks!
Xhacker Liu