$ time real 0m0.000s user 0m0.000s sys 0m0.000stime command output shows 3 different components:
real - The total time elapsed during the command which includes the time taken for the process.
user - The time taken for the process only in the user space. This does not include kernel calls.
sys - The time taken for the process in system space (for kernel related calls )
1. Using time for a command:
$ time ls f1.c f2.c real 0m0.01s user 0m0.00s sys 0m0.01sThis indicates the ls command has taken a total of 0.01 second to finish, which is the time elapsed.
2. Using time command for a simple script:
Let us write a script, try.sh, which prints a welcome message:
$ cat try.sh #!/bin/bash echo "welcome"Running the time command:
$ time ./try.sh welcome real 0m0.03s user 0m0.01s sys 0m0.02sThis script has taken a total of 0.03 seconds to execute.
3. Timing the sleep in the script:
sleep command's duration do not go against user or sys, it is always against the real output.
$ cat try.sh #!/bin/bash sleep 3 echo "welcome"Running the time command:
$ time ./try.sh welcome real 0m3.04s user 0m0.03s sys 0m0.01s
As seen above, the sleep duration goes entirely in the real, not in the user or sys.
Capturing time output:
time command output is re-directed to standard error terminal, and not standard output like other Unix commands. Hence, time command output cannot be re-directed to a file in a normal way.
1. To retrieve only the real time of the time output:
$ time ./try.sh | grep real welcome real 0m1.05s user 0m0.02s sys 0m0.04sAs seen, grep does not help since the time command output is not in the STDOUT.
$ (time ./try.sh) 2>&1 | grep real real 0m1.05sBy re-directing the standard error to standard output, the time command output can now be passed as standard input to other commands.
2. To re-direct the time command output to a file:
$ (time ls ) 2>file
No comments:
Post a Comment