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]>