I'm trying to measure the execution time of a process that I call via the command line (i.e., I want to find out how long it takes to for the process to finish). Is there any command that I can add to the command calling the process that will achieve this?
8 Answers
Add time
before the command you want to measure. For example: time ls
.
The output will look like:
real 0m0.606s
user 0m0.000s
sys 0m0.002s
Explanation on real
, user
and sys
(from man time
):
real
: Elapsed real (wall clock) time used by the process, in seconds.user
: Total number of CPU-seconds that the process used directly (in user mode), in seconds.sys
: Total number of CPU-seconds used by the system on behalf of the process (in kernel mode), in seconds.
-
1@ninjalj, can you provide more information on what the
real
,user
, andsys
times are that this command returns? Jul 17, 2011 at 20:22 -
2@JacobVlijm This answer isn't that elaborate. :) You could edit in your comment and make it so.– muruFeb 13, 2015 at 16:43
-
1Note that you may need
sudo apt-get install time
if you are using a shell wheretime
is not a builtin.– poolieOct 26, 2016 at 16:45 -
1Note that this is the output from Bash's
time
builtin, butman time
would be about an executable (like/usr/bin/time
, from thetime
package), and its output would look different. Also in Bash, you can runhelp time
for help with the builtin.– wjandreaMar 25, 2019 at 21:08 -
Note that the process end does not mean all the work is finished. A copy may take additional minutes after the "time" returns for flushing system bufffers (therefor with unallocated sys time also).– ubfan1Jun 23, 2019 at 16:25
For a line-by-line delta measurement, try gnomon.
It is a command line utility, a bit like moreutils's ts, to prepend timestamp information to the standard output of another command. Useful for long-running processes where you'd like a historical record of what's taking so long.
Piping anything to gnomon will prepend a timestamp to each line, indicating how long that line was the last line in the buffer--that is, how long it took the next line to appear. By default, gnomon will display the seconds elapsed between each line, but that is configurable.
-
6
-
1(typo in link, fortunately URL ok). You can install it with
sudo npm i gnomon -g
if you havenpm
. Not sure how well it does against "progress" lines using '\r' (staying on the same line): in that case I'd like it counting it all as one long line, not separate ones. Jun 14, 2017 at 21:42 -
-
2
date +"%T" && cp -r ./file /destination/folder/here && date +"%T"
Running this command in the terminal will give you the total time for coping a file
-
2
-
This is a good answer, under some circumstances. For example, the following
find
command -- without the2>/dev/null
redirect -- gives copiousPermission denied
messages. However, adding2>/dev/null
to that command breaks thetime
portion of that command. The following provides a good compromise:START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"
, giving (e.g.)/usr/lib/libname-server-2.a find command took 3 sec
as the sole output. May 22, 2019 at 3:45 -
An addendum to my comment: of course, you can simply run
time sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print
(i.e., assudo
) -- avoiding those numerousPermission denied
warnings. May 22, 2019 at 16:04
Occasionally I find myself needing a stopwatch to count how long it takes for an action like my app booting, in which case many of the solutions here are not useful.
For this I like to use sw.
Install
wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
Usage
sw
- start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
- start a stopwatch from the last saved start time (or current time if no last saved start time exists)
- "-r" stands for --resume
time -v command
-v
gives more information
-
6
-
@Gqqnbig were you using this command on Mac OS? If yes, you can
brew install gnu-time
and use the commandgtime
instead oftime
. Sep 22, 2021 at 14:30 -
If you use bash as your shell, it will use it's inbuild time function. To use the
time
program you may use/usr/bin/time -v COMMAND
orcommand time -v COMMAND
. :) Nov 15, 2022 at 23:50
In zsh, the time
command's output is slightly different.
To interpret the output:
time sleep 10
sleep 10 0.00s user 0.00s system 0% cpu 10.011 total
The last number gives the total time as though it were recorded with a real life stopwatch (what you want 99% of the time). The other values are explained here.
Open bashrc file
gedit ~\.bashrc
Find the following text:
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] :\[\033[01;34m\]\w\[\033[00m\]\$ '
And replace with:
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\] [\d|\t]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Restart terminal to check.
-
1This will show the time. It will neither build the difference to the last command, nor will it account for waiting to type and hit ENTER or typing the command. Nov 15, 2022 at 23:54