设为首页 收藏本站
查看: 1456|回复: 6

[经验分享] 多Tomcat 启动/停止/重启 脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-7-8 10:07:47 | 显示全部楼层 |阅读模式
脚本功能
使用标签方式 启动、停止、重启 多个Tomcat实例

脚本使用说明
1.假设Tomcat都安装在/usr/local下,那么Tomcat的命名方式是这样子 tomcat1 tomcat2 tomcat3 tomcat4 ...
2.使用方式: 脚本路径 标签1|标签2  start|stop|restart|status
case ${GROUP_NAME} in
    gp1 )
        TOMCATS="1 2"
        ;;
    gp2 )
        TOMCATS="3 4"
        ;;
    *   )
        usage
        ;;
esac
3.例如: gp1 标签代表是 tomcat1 tomcat2, gp2 标签代表的是 tomcat3 tomcat4
4.使用时请修改标签的名称
5.适用于 Tomcat5 Tomcat6 版本

脚本运行效果:


脚本内容如下:

[Shell] 纯文本查看 复制代码
#!/bin/bash
# -------------------------------------------------------------------------------------------
# 脚本功能
# 使用标签方式 启动、停止、重启 多个Tomcat实例
# 脚本使用说明
# 1.假设Tomcat都安装在/usr/local下,那么Tomcat的命名方式是这样子 tomcat1 tomcat2 tomcat3 tomcat4 ...
# 2.使用方式: 脚本路径 标签1|标签2  start|stop|restart|status
# 3.例如: gp1 标签代表是 tomcat1 tomcat2, gp2 标签代表的是 tomcat3 tomcat4
# 4.使用时请修改标签的名称
# 5.适用于 Tomcat5 Tomcat6
# 关于脚本
# 作者: 雷纳科斯
# 博客: [url]http://linux5588.blog.[/url]
# 邮箱: [email]chanyipiaomiao@163.com[/email]
# 日期: 2013-07-04
# -------------------------------------------------------------------------------------------
# 定义变量
export JAVA_HOME=/usr/local/java                # 输出JAVA_HOME变量
JAVA_BIN="${JAVA_HOME}/bin/java"                # JAVA可执行程序路径
TOMCATS_HOME="/usr/local"                       # 所有的Tomcat安装的目录
SCRIPT_NAME=$0                                  # 脚本绝对路径
GROUP_NAME=$1                                   # 命令行第一个参数
START_STOP=$2                                   # 命令行第二个参数
HOST="127.0.0.1"                                # 本机地址用于测试本机Tomcat是否已经启动完成
STATUS="200 301 302"                            # 定义正常访问返回的状态码
URI="/index.html"                               # 定义测试的URI
BACKGROUD="\033[37m"                            # echo 时的 背景颜色
FONTCOLOR="\033[33m"                            # echo 时的 字体颜色
END="\033[0m"                                   # echo 时的 结束标志
JAVA_OPTS=""                                    # JAVA启动选项,为空就是默认启动选项
#JAVA_OPTS="-server -Xms512m -Xmx512m -XX:PermSize=16m -XX:MaxPermSize=64m -XX:MaxNewSize=64m \
#                                               -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC"
# 帮助提示函数
usage(){
    echo
    echo "Usage: ${SCRIPT_NAME} gp1|gp2 start|stop|restart|status"
    echo
    exit 1
}
# 判断命令行参数是否为空,如果为空,调用帮助提示函数
if [[ ${GROUP_NAME} == "" || ${START_STOP} == "" ]]; then
    usage
fi
# 判断命令行第一个参数,第一个参数为要启动的Tomcat分组,这里的1 2 3 4是代表的是tomcat1 tomcat2 tomcat3 tomcat4
# 使用时 请修改这里
case ${GROUP_NAME} in
    gp1 )
        TOMCATS="1 2"
        ;;
    gp2 )
        TOMCATS="3 4"
        ;;
    *   )
        usage
        ;;
esac
# 获取PID函数
getPID(){
    PID=$(ps -ef | grep -v 'grep' | grep "${TOMCAT_NAME}/conf/logging.properties" | awk '{print $2}')
}
# 单个Tomcat启动函数
startSingleTomcat(){
    TOMCAT_OPTS="-Djava.util.logging.config.file=${TOMCATS_HOME}/${TOMCAT_NAME}/conf/logging.properties \
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
    -Djava.endorsed.dirs=${TOMCATS_HOME}/${TOMCAT_NAME}/common/endorsed \
    -Dcatalina.base=${TOMCATS_HOME}/${TOMCAT_NAME} \
    -Dcatalina.home=${TOMCATS_HOME}/${TOMCAT_NAME} \
    -Djava.io.tmpdir=${TOMCATS_HOME}/${TOMCAT_NAME}/temp \
    -classpath :${TOMCATS_HOME}/${TOMCAT_NAME}/bin/bootstrap.jar:${TOMCATS_HOME}/${TOMCAT_NAME}/bin/commons-logging-api.jar \
    org.apache.catalina.startup.Bootstrap start"
    TOMCAT_LOG="${TOMCATS_HOME}/${TOMCAT_NAME}/logs/catalina.out"
    ${JAVA_BIN} ${JAVA_OPTS} ${TOMCAT_OPTS} > ${TOMCAT_LOG} 2>&1 &
    echo $! > /tmp/${TOMCAT_NAME}.pid
}
# 输出颜色
printColor(){
    echo -ne "${BACKGROUD}${GROUP_NAME}${END} ==> [ ${FONTCOLOR}${TOMCAT_NAME}${END} ] "
}
# 输出正在启动Tomcat
printStart(){
    printColor
    echo -n "is starting Please Wait "
}
# 输出正在停止Tomcat
printStop(){
    printColor
    echo "is stopping,Please wait ..."
}
# 输出Tomcat没有运行
printNotRun(){
    printColor
    echo "is not running..."
}
# 输出Tomcat正在运行
printRunning(){
    printColor
    echo "is running... PID: ${PID}"
}
# 输出Tomcat没有,试图启动Tomcat
printNotRunTryStart(){
    printColor
    echo "is not running, trying start ${TOMCAT_NAME}"
}
# sleep 函数
sleepFun(){
    sleep 0.5
}
# 得到端口
getPort(){
    PORT=`cat ${TOMCATS_HOME}/${TOMCAT_NAME}/conf/server.xml | awk '/HTTP\/1.1/ {print $2}' | cut -d'"' -f2`
}
# 测试端口是否可以正常访问
testPortIsOk(){
    PORT_OK=1
    status=`/usr/bin/curl -I $1 2>/dev/null | head -1 | cut -d" " -f2`
    for i in $STATUS; do
        if [[ ${i} == ${status} ]]; then
            PORT_OK=0
        fi
    done
    return ${PORT_OK}
}
# 检查每个Tomcat是否已经启动好
checkTomcat(){
    status_ok=1
    while [[ ${status_ok} == 1 ]]; do
        testPortIsOk http://${HOST}:${PORT}${URI}
        if [[ $? == 0 ]]; then
            echo " start OK!"
            status_ok=0
        else
            echo -n "."
        fi
    done
}
# Tomcat启动函数
start(){
    for i in ${TOMCATS}; do
        TOMCAT_NAME="tomcat${i}"
        getPID
        getPort
        if [[ "${PID}X" != "X" ]]; then
            printRunning
        else
            startSingleTomcat
            printStart
            checkTomcat
        fi
    done
}
# Tomcat停止函数
stop(){
    for i in ${TOMCATS}; do
        TOMCAT_NAME="tomcat${i}"
        getPID
        if [[ "${PID}X" == "X" ]]; then
            printNotRun
        else
            kill -9 $PID
            printStop
            sleepFun
        fi
    done
}
# Tomcat重启函数
restart(){
    for i in ${TOMCATS}; do
        TOMCAT_NAME="tomcat${i}"
        getPID
        getPort
        if [[ "${PID}X" == "X" ]]; then
            printNotRunTryStart
            startSingleTomcat
            printStart
            checkTomcat
        else
            kill -9 $PID
            printStop
            sleepFun
            startSingleTomcat
            printStart
            checkTomcat
        fi
    done
}
# 获取Tomcat状态函数
status(){
    for i in ${TOMCATS}; do
        TOMCAT_NAME="tomcat${i}"
        getPID
        if [[ "${PID}X" == "X" ]]; then
            printNotRun
        else
            printRunning
        fi
    done
}
# 判断命令行第二个参数
case ${START_STOP} in
    start   )
        start
        ;;
    stop    )
        stop
        ;;
    restart )
        restart
        ;;
    status  )
        status
        ;;
    *       )
        usage
        ;;
esac



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-7162-1-1.html 上篇帖子: tomcat native 下篇帖子: 使用tomcat manager

尚未签到

发表于 2013-7-8 13:40:33 | 显示全部楼层
不要在一棵树上吊死,在附近几棵树上多试试死几次~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-7-9 06:26:22 | 显示全部楼层
爱护环境,人人有病。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-7-9 12:12:03 | 显示全部楼层
找不到恐龙,就用蜥蜴顶

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-7-10 03:46:24 | 显示全部楼层
我妈常说,我们家要是没有电话就不会这么穷。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-7-11 12:01:44 | 显示全部楼层
有道理。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-7-12 08:41:49 | 显示全部楼层
禽兽尚且有半点怜悯之心,而我一点也没有,所以我不是禽兽。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表