|
How To Make A Start And Stop Script
I have two separate scripts that work nicely to curl and generate
two files.. one html and one txt so a total of four.
When the script starts up I want it to:
call and run shellscripta
call and run shellscriptb
sleep for about 40 seconds
again run shellscripta
again run shellscriptb
check and make sure both txta and txtb exist then..
check for any differences..
if they are the same than continue loop/sleep
if the two text files contain different data
email user@somewhere.com with the data of both files then continue
loop
--loop stops when i run 'xcommand stop'
There are two parts of this that's difficult for me. One is creating
a loop that starts and stops when I tell it. The other is the portion that
checks for differences then emails. The script has to 'head -n4'
both text files to see if there are any differences. If there are, I need
it to 'mail' me both parts of the text files 'head -n5' (5th line containing
the date so I know what's oldvsnew).
It would be something similar to a initd startup script.
Code:
#!/bin/sh
case "$1" in
start)
#Not entirely sure of how I would loop
this sequence w/o cron
#Also, on second try and consecutive
thereafter it needs to
#first check to make sure that at least
two txt files reside
#in the current directory.. I haven't
implemented this yet here since
#i'm not sure of how it would loop
./page4mod0.sh &&;
./page4mod99.sh &&;
sleep 45;
;;
#Not sure how to approach this part.. i could
have it diff'd then compared in a temp file
#or throw them into variables then compared..
think i'd prefer memory here though so let's try..
A=`head -n4
pagemod.txt`
B=`head -n4
pagemod0.txt`
if [ "$A"
= "$B" ]
then #Do
nothing
echo >dev/null
else
C=`head -n5
pagemod.txt`
D=`head -n5
pagemod0.txt`
mail@user@home.com
-f `echo "$C ----- $D" > mailer.txt ;cat pagemod.txt >> mailer.txt
; cat pagemod0.txt >> mailer.txt`
fi
;;
stop)
echo -n "Shutdown and cleanup"
kill -9 page4mod0.sh;
kill -9 page4mod0.sh;
rm *.html *.txt;
;;
restart)
#This isn't entirely necessary
now but it would be nice if i could tell it
#to run the stop sequence.. wait.. then start it back up again..
later
status)
# Again not entirely necessary
but just check for process other than
#the current and report pid
;;
*)
## If no parameters are
given, print which are avaiable.
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
Here are a couple of off-the-cuff comments :
- you need a PATH statement at the start of your script with the directories
of all the external programs you are going to call from your script
- call your own scripts and files you manipulate using absolute paths,
not relative paths
- depending on your intention either:
- use & instead of && for background processing
followed by a wait statement after the sleep statement
- use && operator to start processes only when previous
command succeeds but then loose the semicolons
- do not use kill -9 unless you have to . Use kill first and then check.
If not successful use other kill options or move directly on to kill -9.
- use a colon ( : ) as an idle statement instead of echo>/dev/null or
use [ "$A" != "$B" ]
- You might want to brush up the mail command
- You can not kill processes, you need process id's (pids). Either save
those at the start of a process in a tmp file or distill it from ps -ef
- You probably want to put all the statements either in a wrapper script
or a function that contains the 45 second loop with the script calls, the
comparison and the mail section and that you start perpetually in the background
using:
- nohup /path/to/wrapperscript &
- The stop start script then just stops/starts/status checks
that wrapper script
- you can create a perpetual loop using
Code:
while : ; do
your statements
done
- for the restart option you can use:
Code:
$0 stop; $0 start
Enough for now, have fun!
Have a Unix Problem
Do you have
a UNIX Question?
Unix Books :-
UNIX Programming, Certification,
System Administration, Performance Tuning Reference Books
Return to : - Unix
System Administration Hints and Tips
(c) www.sap-basis-abap.com All material on this site is
Copyright.
Every effort is made to ensure the content integrity.
Information used on this site is at your own risk.
All product names are trademarks of their respective
companies.
The site www.sap-basis-abap.com is in no way affiliated
with or endorsed by any company listed at this site.
Any unauthorised copying or mirroring is prohibited.
|