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?

7 Answers 7


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, and sys 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.
    – muru
    Feb 13, 2015 at 16:43
  • 1
    Note that you may need sudo apt-get install time if you are using a shell where time is not a builtin.
    – poolie
    Oct 26, 2016 at 16:45
  • 1
    Note that this is the output from Bash's time builtin, but man time would be about an executable (like /usr/bin/time, from the time package), and its output would look different. Also in Bash, you can run help time for help with the builtin.
    – wjandrea
    Mar 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).
    – ubfan1
    Jun 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.

gnomon demo

  • 5
    This is pretty slick. Sep 8, 2016 at 21:53
  • 1
    (typo in link, fortunately URL ok). You can install it with sudo npm i gnomon -g if you have npm. 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
  • so we pipe it to gnomon ! thats it ? May 15, 2018 at 9:44
  • 1
    It is deprecated now, is there any similar alternative now? May 23 at 14:46

You can use time:

time ls -R
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 will give you the start time and end time, not the duration.
    – wjandrea
    Mar 25, 2019 at 19:31
  • This is a good answer, under some circumstances. For example, the following find command -- without the 2>/dev/null redirect -- gives copious Permission denied messages. However, adding 2>/dev/null to that command breaks the time 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., as sudo) -- avoiding those numerous Permission 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.



wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/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

  • 5
    -v: command not found
    – Gqqnbig
    Mar 17, 2021 at 8:26
  • @Gqqnbig were you using this command on Mac OS? If yes, you can brew install gnu-time and use the command gtime instead of time. Sep 22, 2021 at 14:30

1) Open bashrc file

gedit ~\.bashrc

2) 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\]\$ ' 

3) 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\]\$ ' 

4) Restart terminal to check.

Sample output in terminal

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy