Sponsored Content
Top Forums Shell Programming and Scripting A Question Regarding Timers and Output Post 302619007 by Scrutinizer on Wednesday 4th of April 2012 05:34:51 PM
Old 04-04-2012
Alright, I had a bit of a go and here are a couple of ideas you could try..

As others have noted: date '%s' is a GNU extension and does not function on many platform. Your best bet may be to use perl :
Code:
perl -e 'print time'

of which a basic version is available on many platforms these days
You could put that into a function, since you are using it a lot:
Code:
stamp(){
  perl -e 'print time'
}

The nice thing about this is, that you only need to replace the content of the function if you wish to use another method to obtain epoch time, for example with date '%s'

The other thing that you can change is to use a general redirection that also includes stderr (Or maybe at a later stage you wish to only use std err):
Code:
exec >> "$LOGFILE" 2>&1

Further I replaced backticks everywhere with $(..) and expr statement with $(( ... ))
This leads to this script:
Code:
LOGFILE=completed_work_$(date +%F).log
stamp(){
  perl -e 'print time'
}
exec >> "$LOGFILE" 2>&1
my_run_start_date=$(date +%F)
my_run_start_time=$(date +%H:%M)

echo "Run began on $my_run_start_date at $my_run_start_time"
master_start=$(stamp)
# do the work here

step_start=$(stamp) #timer start
echo 1 Do some work here.;echo 1 This is what we did here.
step_end=$(stamp)   #timer end
step_diff=$((step_end - step_start))
echo How long it took to do it : $step_start - $step_end = $step_diff

# we can do this as many times as we need to
step_start=$(stamp) #timer start
echo 2 Do some work here.;echo 2 This is what we did here.
step_end=$(stamp)   #timer end
step_diff=$((step_end - step_start))
echo How long it took to do it : $step_start - $step_end = $step_diff

# end of the work section
master_end=$(stamp)
master_diff=$((master_end - master_start))
my_run_end_date=`date +%F`
my_run_end_time=`date +%H:%M`
echo "Run ended on $my_run_end_date at $my_run_end_time"
echo "Start=$master_start : End=$master_end"
master_time_elapsed=$((master_diff / 3600))
echo "Elapsed time = $master_time_elapsed hours"

There is a bit of repetition for every step. You could reduce that for example like this:
Code:
stamp(){
  perl -e 'print time'
}

timer(){
  case $1 in
    start) TS=$(stamp) ;;
    stop)  echo "How long it took to do it : $(( $(stamp) - TS )) seconds" ;;
  esac
}

LOGFILE=completed_work_$(date +%F).log

exec >> "$LOGFILE" 2>&1

echo "Run began on $(date '+%F at %H:%M')"
master_start=$(stamp)
# do the work here

timer start
echo "1 Do some work here." ;echo "1 This is what we did here."
timer stop

# we can do this as many times as we need to
timer start
echo "2 Do some work here.";echo "2 This is what we did here."
timer stop

# end of the work section
master_end=$(stamp)
master_diff=$((master_end - master_start))
master_time_elapsed=$((master_diff / 3600))
echo "Run ended on $(date '+%F at %H:%M')"
echo "Start=$master_start : End=$master_end"
echo "Elapsed time = $master_time_elapsed hours"

And so forth... Apart from the call to perl this is all POSIX shell code...
This User Gave Thanks to Scrutinizer For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

unix and timers

Hello there.. I need to know when i start indipendant timers how can i recognize which of the active timers have made timeout alarm. The number of started timers depends on the running app I'd appreciate your help Thanks in advance (0 Replies)
Discussion started by: nightcat
0 Replies

2. Programming

A question about output.

I am learning output the data to a file using "ofstream". I need to read data from a file and output the result to the other file in 2 different ways. To do that I have to provoke two functions, and they have to output the result to the same text file. My problem is: they are correct on the screen... (2 Replies)
Discussion started by: HOUSCOUS
2 Replies

3. UNIX for Dummies Questions & Answers

Question on prtdiag output ...

Hello all , This is the output of my prtdiag command ...The speed of each of the CPUs is listed below (1281 MHz ) ..That's fine ..I'm confused about the (System clock frequency: 183 MHZ ) ..What is the difference between System Clock freq and CPU freq ...THanks.. System Configuration: Sun... (5 Replies)
Discussion started by: luft
5 Replies

4. Shell Programming and Scripting

display and output...question

Hi, I have a small question about the value cannot display correctly: MSG=log fruit=apple print "No $fruit in the store" > "$MSG/fruit_message.txt" output: No $fruit in the store should be: No apple in the store AND $MSG/fruit_message.txt ----------> cannot find the... (5 Replies)
Discussion started by: happyv
5 Replies

5. Shell Programming and Scripting

Question about output to file

Hi, I am try to setup a FOR loop script to find out all the existing linux workstations in the network w/ ip address, hostname and linux version. I created a basic FOR loop script: for i in $(seq 1 254) do echo 10.72.169.$i >> result ssh -o ConnectTimeout=3 root@10.72.169.$i "hostname"... (1 Reply)
Discussion started by: beeloo
1 Replies

6. Programming

Doubts about timers in linux kernel

Hi , I am trying to learn timers in linux kernel. I am trying to write a program where I can configure a timer to tick in every 5 seconds and a function should thus exicute in every five seconds. I tried one program with the help of linux/timer.h headerfile but I couldnt get the... (4 Replies)
Discussion started by: iamjayanth
4 Replies

7. Solaris

Question on kstat output

I'm having a little trouble understanding the output I'm seeing from kstat for the "net" class. I'm seeing a lot of entries with "mac" as the name, like this. module: bge instance: 3 name: mac class: net ... (3 Replies)
Discussion started by: Midcain
3 Replies

8. Shell Programming and Scripting

Command Output Question

Hi everyone-- I'm new to these forums and shell scripting, and I'm trying to write a script that checks if a particular ip is pingable My idea was to check if the output of the command ping <some ip> -c 1 -w 1 had the string: "1 packet transmitted, 1 received"How would I go about doing this?... (2 Replies)
Discussion started by: Prodiga1
2 Replies

9. Programming

pthread_mutex_timedlock and Timers option

in its man-page pthread_mutex_timedlock documents that the absolute timeout parameter should be based on the CLOCK_REALTIME clock or in the system clock. All this depending on whether the 'Timers option' is supported or not. What do they mean by 'Timers option'? How could I tell for sure what... (8 Replies)
Discussion started by: ramestica
8 Replies

10. Shell Programming and Scripting

INPUT/OUTPUT question

Hi All, Is it wrong to do something like this: ssh -T $PROXY_USER@$PROXY_SERVER < script.txt > ssh_output.log I ran and it works fine and does what I need. I wanted to pass a set of commands to the ssh session and store an output in the log file. Thanks (4 Replies)
Discussion started by: rdogadin
4 Replies
All times are GMT -4. The time now is 04:35 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy