king

linux下tomcat关闭服务

king linux 2023-01-25 444浏览 0

在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技术 的文章
发表评论