Looping in the shell script with help of script timer.
Hello Experts-
We are facing some issues in the while loop script when we use the script time to decide whether to exist from the loop or continue.
Below is the script
HTML Code:
SrcExitLoop="FALSE"
Src_InitialStartTime=`date +%s`
Src_StartTime=`date +%s`
Src_NUM_ALERTS=0
TOTAL_ALERTS=`expr <SOME WAIT THRESHOLD.e.g.50> / <SOME ALERT SECONDS.e.g 10>`
while [[ ${SrcExitLoop} == "FALSE" ]]
do
"Some Oracle Query"
Src_CurrentTime=`date +%s`
Src_WaitTime=`expr ${Src_CurrentTime} - ${Src_StartTime}`
Src_TotalTime=`expr ${Src_CurrentTime} - ${Src_InitialStartTime}`
if [[ ${Src_WaitTime} -gt <SOME ALERT SECONDS.e.g 10> ]]
then
if [[ ${Src_TotalTime} -gt <SOME WAIT THRESHOLD.e.g.50> ]]
then
echo "Reached Max Seconds"
else
Src_NUM_ALERTS=`expr ${Src_NUM_ALERTS} + 1`
TotalTimeFormat=`printf ""%dh:%dm:%ds"\n" $((${Src_TotalTime}/3600)) $((${Src_TotalTime}%3600/60)) $((${Src_TotalTime}%60))`
AlertSecondsFormat=`printf ""%dh:%dm:%ds"\n" $((${alert_seconds}/3600)) $((${alert_seconds}%3600/60)) $((${alert_seconds}%60))`
errorSubject="ALERT ${Src_NUM_ALERTS}/${TOTAL_ALERTS} :- Process continues"
errorText="EMAIL BODY"
echo "${errorText}" | mailx -s "${errorSubject}" ${EMAIL_LIST}
Src_StartTime=`date +%s`
fi
else
sleep <SOME VALUE.e.g.5>
fi
if [[ ${Src_TotalTime} -gt <SOME WAIT THRESHOLD.e.g.50> ]]
then
Src_NUM_ALERTS_1=`expr ${Src_NUM_ALERTS} + 1 `
TotalTimeFormat=`printf ""%dh:%dm:%ds"\n" $((${Src_TotalTime}/3600)) $((${Src_TotalTime}%3600/60)) $((${Src_TotalTime}%60))`
AlertSecondsFormat=`printf ""%dh:%dm:%ds"\n" $((${alert_seconds}/3600)) $((${alert_seconds}%3600/60)) $((${alert_seconds}%60))`
errorSubject="ALERT ${Src_NUM_ALERTS_1}/${TOTAL_ALERTS} :- Process STOPPED"
errorText="EMAIL BODY"
echo "${errorText}" | mailx -s "${errorSubject}" ${EMAIL_LIST}
SrcExitLoop="TRUE"
exit 0
fi
done
This script works fine most of the time. Since we are using unix start and end time to determine the wait time and total time, it some times doesn't give all the emails.
This happens because the return time from the oracle is more.
For example :-
if our sleep time is 5 seconds ,
alert time is 10 seconds,
total threshold is 50 seconds.
Ideally we should receive 5 email every 10 seconds. Subject will "ALETRT 1/5...5/5".
But some times oracle is taking more than 10 seconds to return the value. Now the Src_NUM_ALERTS variable skips the one value..so insteading of receving 5 emails we receive only 4 emails and last email is "ALERT 4/5".
It miss one iteration that is breaks at...
Is there any other way where in we can avoid this skip? Can we simply use counter?
How can we define in the script that alert us every pre defined seconds(e.g.10 seconds) and do iteration depending upon the total wait time divided by total alert time(e.g.50/10)?
The email won't be coming exactly after 10 seconds(in this case) but we should recevie 5 emails(for above parametrers).
Please help.
I am trying to get the follow script to run in the background on the 'fly'. I can launch it via cron and it will run in the background. BUT when I launch it from the command line it will run in the foreground. I figure it has to do with the while loop I have, but I have no clue how I can run the... (8 Replies)
any of you guys have a script for measuring the run time of any given script, where you would sandwich your own script between the timer script or something? thanks! :) (2 Replies)
hi,
my first question is :-
i would like to know how do i loop through the output of a variable.
for ex:- if i have a variable called x and echo $x gives the output like
feb 19 07
feb 20 07
feb 21 07
i would like to know how do i loop through this since it is separated and i... (1 Reply)
Situation: I have a working shell script on our file server (OSXS Tiger) to connect to a workstation, which is using a portable home directory (phd), and rsync a user's MirrorAgent.log. I'm not that strong of a scripter (obviously), but I would like to add other workstations to this script as they... (4 Replies)
Hey guys, I'm brand new to the bash scripting world, here's my issue..
When people SSH to my box, I'm wanting to use screen to monitor them if I so choose. So, I've created a new user: testing, and I've set its startup shell to /bin/myshell.sh whose contents read this:
#!/bin/sh
$me =... (4 Replies)
Hello members,
I'm working on the Solaris environment and the DB i'm using is Oracle 10g.
Skeleton of what I'm attempting;
Write a ksh script to perform the following. I have no idea how to include my sql query within a shell script and loop through the statements. Have therefore given a... (4 Replies)
I am new to scripting and this is probably the 4th or 5th simple script I have written. I am working with a HUGE number of data that need to be organized into folders and named a certain way. I wrote the naming script using a while function to go through the 1000-some folders and rename the files... (0 Replies)
Hey folks,
We already got a working Script running, but actually we gotta start it manually but at least we want to run it like every 30minutes 1time.
Could anyone give it a shot?
#!/bin/sh
for i in A B C D E F G H I J K L M N O P Q R S T U V W X Z
do
ln -sv /x/$i/*/PDF/001-*.*... (1 Reply)
Hi,
Iam using below code to login to servers to get cpu utilisation. but output is coming for only one server. code is below
root@blr-svr-oclan-01 # more SSSC_CPU_UTIL1.sh
#!/bin/sh
echo "CPU UTILIZATION"
while read line; do
IDLE=`/usr/local/bin/sshpass -p 'xxx' ssh xxx@$line 'sar 2 2' |... (1 Reply)