After a couple of fixes the script started working, but Tomcat still 
hangs. So I guess netstat can't be used for that. Anyway, I have a 
simple "sleep 3" hack that works perfectly, so this is not an issue...

> Something like this may work (just a quick hack so there may be typos)
> 
> --start cut here for script
> #!/bin/sh
> ###################################
> # restart.sh
> # restarts tomcat
> # usage: restart.sh ip port
> #    ip   - The ip address (or *)
> #    port - Which tomcat listens on shutdown
> #
> #  eg: restart.sh '*' 8005
> #      restart.sh 127.0.0.1  8005
> #      restart.sh 192.168.0.100  8005
> #      restart.sh 207.46.230.218  8005
> ###################################
> 
> 
> #######################################
> # Function to check it tomcat is running
> # I run wacky UNIX flavor so you netstat
> # may differ from mine
> # side effect: sets variable IS_RUNNING
> # to signify tomcat is listening on port
> #######################################
> TC_check()
> {
>   Q="$ADDRESS.$PORT"
>   # Grep wants tcp connection that are Listening on the port/address
>   IS_RUNNING=`netstat -an|egrep '^tcp'|grep LISTEN|grep "$Q"|wc -l`
> }
> 
> 
> ###################################
> # First - is there a TOMCAT_HOME
> # so I can call shutdown?
> 
> if test "$TOMCAT_HOME" = "" ; then
>   echo "TOMCAT_HOME not defined!"
>   exit 2
> fi
> 
> ###################################
> # Now check the incoming args
> ADDRESS=$1
> PORT=$2
> 
> if test "$ADDRESS" = "" ; then
>   echo "In valid arg - no address given!"
>   exit 2
> fi
> 
> if test "$PORT" = "" ; then
>   echo "In valid arg - no port given!"
>   exit 2
> fi
> 
> 
> ###################################
> # Now for the fun
> TC_check
> if [ IS_RUNNING -eq 1 ] ; then
>   echo "Its running - let's shutdown"
>   $TOMCAT_HOME/bin/shutdown.sh
>   TC_check
> fi
> 
> 
> while [ IS_RUNNING -eq 1 ] ; do
>   echo "Still running"
>   sleep 1
>   TC_check
> done
> 
> echo "Now startup ..."
> $TOMCAT_HOME/bin/startup.sh
> ######################################################################
> # End of script
> ######################################################################
> 
> Aleksi Kallio wrote:
> 
>> Thanks for your fast reply! The netstat alternative seems reasonable. 
>> I'm quite new to Unix (server is running Red Hat Linux, shell is csh) 
>> and have problems implementing the script.
>>
>> Getting the netstat listing and grepping it is no problem, but how I 
>> can loop in a shell script while "netstat -l | grep '8442'" returns 
>> something ie. socket is alive (8442 is the port number)?
>>
>>> You have a few alternatives:
>>> 1) Kill the java process and then you can run startup.sh immediatetly
>>> 2) Write a wrapper script which calls shutdown.sh, then does one of 
>>> the following to verify tomcat is shutdown before calling startup.sh
>>>   a) The process is non-existent
>>>   b) The port is no taken (use netstat)
>>>   c) Parse catalina.out for the phrase saying tomcat was shutdown
>>>
>>> -Tim
>>>
>>>
>>> Aleksi Kallio wrote:
>>>
>>>> I have a script that stops Tomcat (shutdown.sh), does stuff and then
>>>> restarts it (startup.sh). Doing stuff doesn't take long enough and
>>>> Tomcat refuses to restart because the port is still reserved.
>>>>
>>>> Removing the restart from script and waiting a few secs after running
>>>> the script, then restarting manually, works. It is just a bit
>>>> frustrating. Also if a restart too early, Tomcat fails to start and
>>>> produces a process that has to be killed by hand and it's also 
>>>> frustrating.
>>>>
>>>> How to check if Tomcat is stopped properly?
>>>>
>>>>  
>>>
>>>
>>>
>>>
>>>
>>> -- 
>>> To unsubscribe, e-mail:   
>>> <mailto:[EMAIL PROTECTED]>
>>> For additional commands, e-mail: 
>>> <mailto:[EMAIL PROTECTED]>
>>
>>
>>
>>
>>
>>
>>
> 
> 
> 
> -- 
> To unsubscribe, e-mail:   
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: 
> <mailto:[EMAIL PROTECTED]>




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to