shell编程—tomcat自动发包详解

版权声明:所有文章都是自己原创,谢谢。 https://blog.csdn.net/weixin_42840933/article/details/84141893

tomcat是我们日常使用的java容器,常作为web服务器和Nginx配合使用,运维工程师需要经常发布更新包,而使用shell脚本可以实现高效安全的发包,这以我虚拟机环境来编写。

一. 需求

  1. 上传war1文件到/soft/new目录下
  2. 将/usr/local/tomcat/webapps文件中相应的文件压缩备份到/soft/old中,备份文件要以当前时间为名称,比如My-111-2018-11-13-1408,并且在/soft/old中区分每个项目的备份文件
  3. 将/soft/My-Config中的配置文件替换进入war1
  4. 将替换好的war1文件更换名称为项目名称,比如My-111,并解压放入webapps中
  5. 删除旧文件
  6. 注意要写出相应的状态

二. 思路

  1. 手动上传war1文件到/soft/new目录下
  2. 检查tomcat是否在运行,如果运行,则需要停止
    这里需用if条件语句来判断
  3. 检测我上传文件的名称,并且在webapps中找到相应的包用现在的系统时间命名压缩备份,在/soft/new中新建一个文件夹以上传文件为名称,并将配置文件复制到其中去。
  4. 删除以前的文件
  5. 启动tomcat

注意:虽然看起来简单,但是要想用shell来实现还是有一定难度,要考虑周全各种因素,难点在于两个检测,检测tomcat是否运行以及检测文件名称,擅用if语句和for循环实现,变量编写,注意文件权限。

三. 脚本代码

    #!/bin/bash
    count1=`ps -ef | grep tomcat | grep -v "grep" | wc -l`
    if [ $count1 -gt 0 ];then
       echo "tomcat working,tomcat stopping"
       cd /usr/local/tomcat/bin
       sh catalina.sh stop &>/dev/null
       sleep 3s
       
       count2=`ps -ef | grep tomcat | grep -v "grep" | wc -l`
       if [ $count2 -gt 0 ];then   
           pid=`ps -ef | grep tomcat | grep -v "grep" | awk '{print $2}'`
           kill -9 $pid
       elif [ $count2 -eq 0 ];then
           echo "tomcat stopped"
       fi
    elif [ $count1 -eq 0 ];then
       echo "tomcat already stopped"
    fi
    
    date=`date +%Y-%m-%d-%H%M`
    cd /soft/new
    chmod -R 777 /soft/new
    chmod -R 777 /usr/local/tomcat/webapps/*
    for i in My-111 My-222 My-333 My-444 My-555 My-666 My-777
    do
        count3=`ls | grep war | grep "$i"- | wc -l`
           if [ $count3 -gt 0 ];then
              echo "$i,$count3"
              cd /usr/local/tomcat/webapps
              echo "starting update"
              tar -cf $i-$date.tar $i
              rm -rf /usr/local/tomcat/webapps/$i
    
              if [ -d /soft/old/$ ];then
                 mv $i-$date.tar /soft/old/$i
              else
                 mkdir -p /soft/old/$i
    	     chmod -R 777 /soft/old/$i
                 mv $i-$date.tar /soft/old/$i
              fi
              echo "old file already back-up"
    
              cd /soft/new
              mkdir -p /soft/new/$i
              chmod -R 777 /soft/new/$i
              unzip -q /soft/new/stw*.war -d $i       
              cp -rf /soft/My-Config/$i/* /soft/new/$i/My-Config/classes
              mv /soft/new/$i /usr/local/tomcat/webapps
              echo "new file already up"
           fi
     done
    
     rm -rf /soft/new/*
     cd /usr/local/tomcat/bin
     sh catalina.sh start &>/dev/null
     #find /soft/old/$i -mtime +15 -name "My*" -exec rm -rf {}\;
     echo "old file already delete"
     echo "update finish"

四. 代码详解

后续继续更新

猜你喜欢

转载自blog.csdn.net/weixin_42840933/article/details/84141893