在Linux下,用startup.sh能正常启动tomcat,但用shutdown.sh却经常不能正常关掉tomcat,开始我是直接用ps -aux找到tomcat运行的进程号,然后直接Kill掉,但这样比较麻烦,后来我就写了一个服务,放到/etc/init.d下面,直接用server tomcat start来启动tomcat,用server tomcat stop来停止tomcat,现在把我的这个tomcat服务贴出来,分享给大家
vi /etc/init.d/tomcat
#!/bin/sh
	TOMCAT_HOME=/usr/local/tomcat
	JAVA_HOME=/usr/local/jdk1.6
	# Source function library.
	. /etc/rc.d/init.d/functions
# Source networking configuration.
	. /etc/sysconfig/network
export TOMCAT_HOME JAVA_HOME
	start() {
	        echo -n $"Starting Tomcat6: "
	        su – tomcat -c $TOMCAT_HOME/bin/startup.sh
	        ps ax –width=1000 | grep "$JAVA_HOME/bin/java -Djava.util.logging.config.file=$TOMCAT_HOME" | awk '{printf $1 " "}' > $TOMCAT_HOME/tomcat.pid
	        sleep 1
	        echo "Tomcat6 is started……"
	}
stop() {
	        echo "Stopping Tomcat6: "
	        tomcatpid=($(awk '{print $1}' $TOMCAT_HOME/tomcat.pid))
	        kill -9 $tomcatpid
	        rm -f $TOMCAT_HOME/tomcat.pid
	        sleep 1
	        echo "Tomcat6 is stoped……"
	}
status() {
	     ps ax –width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap" | awk '{printf $1 " "}' | wc | awk '{print $2}' >/tmp/tomcat_process_count.txt
	     read line < /tmp/tomcat_process_count.txt
	     if [ $line -gt 0 ]; then
	       echo -n "tomcat6 ( pid "
	       ps ax –width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap" | awk '{printf $1 " "}'
	       echo ") is running"
	     else
	       echo "Tomcat6 is stopped"
	     fi
	}
case "$1" in
	  start)
	    # Start Tomcat
	    start
	    exit $?
	    ;;
  stop)
	    # Stop Tomcat
	    stop
	    exit $?
	    ;;
	  restart)
	    # Restart Tomcat
	    stop
	    sleep 3
	    start
	    exit $?
	    ;;
	   status)
	    status
	    exit $?
	    ;;
	  *)
	    echo "Usage: tomcat6 {start|stop|restart|status}"
	    exit 1;;
	esac
用这个服务,大家还需要改2个地方,就是TOMCAT_HOME=/usr/local/tomcat;JAVA_HOME=/usr/local/jdk1.6,把这连个修改成自己服务器上安装tomcat和jdk的路径
	然后保存,给于/etc/init.d/tomcat 执行权限就可以了
	其实这种方法不好,直接kill掉tomcat会直接释放掉内存,可能会造成数据的丢失,我之前也用过jsvc的,但是对于服务器上只有一个tomcat,可以用jsvc,但是一台服务器上需要运行多个tomcat的时候,这种方法就无效了。这个tomcat的bug一直没有解决,也是没有办法的办法,如果大家有更好的办法,希望也能分享出来。
转载请注明:LINUX服务器运维架构技术分享 » linux下tomcat关闭服务