Q. I am able to write PHP or Perl script where I can find out time difference between script executions. Now I have .shtml file that is nothing but a shell script outputting some data to browser. What I want is time difference or time it took to execute a script. How do I write a shell script?
A. Your Logic should be as follows:
* Get start time and store to a variable START
* Execute a shell script
* Grab output and send to web browser
* Get time again and store to a variable END
* Calculate difference using expression END - START
Shell script o get the time difference
Here is small script that does the same thing (please note that script teated on GNU/Linux and with GNU date command only):
$ vi timediff.bash
Append text as follows:
#!/bin/bash START=$(date +%s) # do something # start your script work here ls -R /etc > /tmp/x rm -f /tmp/x # your logic ends here END=$(date +%s) DIFF=$(( $END - $START )) echo "It took $DIFF seconds"
Save and execute the script as follows:
$ chmod +x timediff.bash
Execute the script:
$ ./timediff.bash
Output:
It took 4 seconds
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- My 10 UNIX Command Line Mistakes
- Linux: 20 Iptables Examples For New SysAdmins

- 25 PHP Security Best Practices For Sys Admins
- The Novice Guide To Buying A Linux Laptop
- 10 Greatest Open Source Software Of 2009
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Linux Video Editor Software
Facebook it - Tweet it - Print it -


{ 19 comments… read them below or add one }
What ifmy script takes mili seconds to execute and I want to be able to measure the time difference even if it is few micro seconds or mili seconds.
Thanks,
Ananda
instead of
$(date +%s)
use
$(date +%s%N)
and you will get nanoseconds precision
—
Mitsuhashi Da! Oboeteoke!
i need to find the no.of days between system date and the date of file creation. how do i achieve this?
i need to find the no.of days and time between system date and the date of file creation. how do i achieve this?
Hi, you time diff script doesn’t work. date +%s returns only %s as value. And thus it does not work forward.
The above mentioned script will not work because “%s” is given in small letter.
Replace “%s” with “%S” and the script will work.
can i have the similar script in k-shell
Cool script, thanks!
write a shell script pow(a,b)
eg a=2
b=3
how to to write this program.
Wow! its really cool :)
How do i find time difference between two file .
Example: One file created at Wed Feb 18 10:08:34 IST 2009.And Anothe file created at
Wed Feb 18 23:32:36 IST 2009. How do i find difference between Wed Feb 18 23:32:36 IST 2009 – Wed Feb 18 10:08:34 IST 2009 ?
Please Help
nice script…. good
thaqs
Good one !!!
Thanks for the script mate. It was of great help to me.
Just a comment:
%s does not work on Solaris. %S does, but it only returns the seconds part of the date-time, not the number of seconds since 00:00:00, Jan 1, 1970 so you would have to deal with the math of changes in minutes, hours and the turn over from 59 to 0.
@Achala
difference between 2 files in seconds:
use date -r for the modification date of the file and +%s for date in seconds:
Example 2 files bobo.png and foobar.ppm
echo `date -r bobo.png +%s`-`date -r foobar.ppm +%s` | bc
8411376
echo “8411376/(24*3600)”|bc -l
97.35388888888888888888
So 97 days between these files.
It was of great help to me…………….Thanx.
Stumbled upon this example. The script in article is all very fine as a script exercise, but it does not follow bash logic. If you want to get the running time of – lets say – a_long_process
you just execute:
time a_long_process
simple, isn’t it? For more options check: man time
Is it possible to do this with the use of the time() command?