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
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop












{ 24 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?
This will remove all files modified 30 or more days ago.
for file in “$( /usr/bin/find /path/to/your/files -type f -mtime +30 )”
do
/bin/rm -v -f $file
done
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?
I want to get system time alone. How do I get it from shell script? Anyone please suggest scripts
Hey
Instead of using second can we use DD:MM:YYYY format
and then calculate deference.
write a script, ” How much time it will take to boot up the device”?, can anyone help me?
Which is in shell or perl script or python?