Tomcat_启动,关停,重启 脚本

参考文章:

1.完美解决Linux服务器tomcat开机自启动问题

http://www.cnblogs.com/zdz8207/p/linux-tomcat-autostartup.html


2.Tomcat重启脚本restart.sh停止脚本stop.sh

http://www.cnblogs.com/zdz8207/p/Tomcat-restart-shell.html


Tomcat 按照后提供了如下脚本。


问题1:

可以看出只有启动脚本(startup.sh) 关停脚本(shutdown.sh),并没有重启的脚本。

问题2:

虽然提供了shutdown.sh .  但是实际部署中经常会出现死进程形象,无法杀掉进程需要查询进程号kill掉才能正常启动。


综合上面几个问题,我编写了如下脚本。

启动 start.sh

关停 stop.sh

重启 restart.sh


启动

    封装原有的脚本,没做任何额外的处理。

关停

   先用tomcat 提供的脚本去关停服务,若没用成功。 通过 kill -9 PID 的方式,强制杀死服务。

重启

   其实以上2个脚本的整合。 先关停,后启动。


下面的脚本都需要先定义 TOMCAT_HOME 环境变量。我的环境变量定义在了 /etc/profile


启动 start.sh

#!/bin/bash

TOMCAT_DIR=${TOMCAT_HOME}
TOMCAT_PATH=${TOMCAT_DIR}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

#startup  tomcat server

echo "Try to startup tomcat"
sh "$TOMCAT_PATH/startup.sh"
sleep 10s 
PID=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
    echo "Restart tomcat successfully!"
else
    echo "Fail to startup tomcat"
    exit 1
fi


关停 stop.sh

#!/bin/bash

TOMCAT_DIR=${TOMCAT_HOME}
TOMCAT_PATH=${TOMCAT_DIR}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

#Shutdowm tomcat server

PID=`ps aux | grep ${TOMCAT_DIR}  | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
    echo "Will kill tomcat: $PID"
    echo "Use shutdown.sh"
sh "$TOMCAT_PATH/shutdown.sh"
    sleep 20s
else
    echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
    echo "Try to kill $PID2"
    echo 'kill -9 PID'
    kill -9 $PID2
    sleep 20s
else
    echo "No Tomcat Process $PID2"
fi



重启 restart.sh

#!/bin/bash

TOMCAT_DIR=${TOMCAT_HOME}
TOMCAT_PATH=${TOMCAT_DIR}/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

#Shutdowm tomcat server

PID=`ps aux | grep ${TOMCAT_DIR}  | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
    echo "Will kill tomcat: $PID"
    echo "Use shutdown.sh"
    sh "$TOMCAT_PATH/shutdown.sh"
    sleep 20s
else 
    echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
    echo "Try to kill $PID2"
    echo 'kill -9 PID'
    kill -9 $PID2
    sleep 20s
else 
    echo "No Tomcat Process $PID2"
fi


#Startup  tomcat server

echo "Try to startup tomcat"
sh "$TOMCAT_PATH/startup.sh"
sleep 10s
PID=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
    echo "Restart tomcat successfully!"
else
    echo "Fail to startup tomcat"
    exit 1
fi









com.sun.xml.internal.ws.server.ServerRtException: 服务器运行时错误: java.net.BindException: Address already in use: bind at com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(ServerMgr.java:130) at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:64) at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:232) at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:126) at javax.xml.ws.Endpoint.publish(Endpoint.java:240) at com.cdsoft.project.common.webservice.WebserviceListener.endpoint(WebserviceListener.java:26) at com.cdsoft.project.common.webservice.WebserviceListener$$EnhancerBySpringCGLIB$$e7d33782.CGLIB$endpoint$1(<generated>) at com.cdsoft.project.common.webservice.WebserviceListener$$EnhancerBySpringCGLIB$$e7d33782$$FastClassBySpringCGLIB$$c13a648e.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) at com.cdsoft.project.common.webservice.WebserviceListener$$EnhancerBySpringCGLIB$$e7d33782.endpoint(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1318) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:866) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391) at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204) at com.cdsoft.CdSoftApplication.main(CdSoftApplication.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) Caused by: java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at sun.net.httpserver.ServerImpl.<init>(ServerImpl.java:100) at sun.net.httpserver.HttpServerImpl.<init>(HttpServerImpl.java:50) at sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(DefaultHttpServerProvider.java:35) at com.sun.net.httpserver.HttpServer.create(HttpServer.java:130) at com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(ServerMgr.java:98) ... 40 more
最新发布
09-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值