美文网首页
linux shell编程学习--实例讲解

linux shell编程学习--实例讲解

作者: 爱编程的凯哥 | 来源:发表于2018-12-19 22:32 被阅读9次

    定义

    以上都是基本语法,下面我们将通过一个具体的例子,来实践讲解shell脚本的使用

    实例一 jenkins本地自动化部署脚本

    说明:此脚本实现了通过jenkins,从git上获取tomcat,本地maven打包服务,发布到tomcat中,然后复制tomcat到指定目录下,检测原有服务,并重启tomcat服务,并通过curl命令测试服务是否已经启动成功

    #!/bin/sh -
    
    set -x
    
    
    targetName=${project_name}
    targetWar=
    base_tomcat=
    port=${port}
    tomcat_name="tomcat-${project_name}-${port}"
    tomcat_target=
    
    #更新构建id,否则如果jenkins和tomcat在同一服务器的话,jenkins执行完成后,会杀死所有进程
    export BUILD_ID=tomcat_deploy_id_${tomcat_name}
    
    workspace=`find /jenkins/   -name  ${JOB_NAME}`
    
    echo "$M2_REPO" 
    
    if [ -d ${workspace} ]
    then 
        echo "workspace is exists ${workspace} \n" > /dev/null
    
        cd ${workspace}
    
        mvn clean install -Dmaven.test.skip=true 
        if [ $? -eq 0 ]
        then
            echo "本地打包${targetName}完成 \n" > /dev/null
        else
            echo  "本地打包${targetName}失败 \n" > /dev/null
            exit 1
        fi
    else 
        echo "workspace is not exists ${workspace} \n" > /dev/null
    fi
    
    
    targetWar=`find  /apps/mvn-space  -name $targetName*.war`
    
    
    if [ -n "${targetWar}" ]
    then 
        echo "echo ${targetWar} build success, start tomcat "
    else
        echo "echo ${targetWar} is not exists,部署失败\n"
        exit 1
    fi
    
    
    
    # # # 清除空间内的basetomcat
    rm -rf tomcat-base
    #捡出tomcat
    git clone git@code.aliyun.com:tlgj704/tomcat-base.git
    # #
    base_tomcat=`find /jenkins/ -name tomcat-base`
    
    if [ -d "${base_tomcat}" ]
    then
        echo "base_tomcat is ${base_tomcat}"
    else
        echo "未找到base_tomcat,部署失败"
        exist 1
    fi
    #将war拷贝到base-tomcat中
    cp ${targetWar}  ${base_tomcat}/webapps/${targetName}.war
    
    pushd ${base_tomcat}/conf/
    
    #更新tomcat端口
    `sed -i "s/8080/${port}/g" server.xml`
    
    pushd 
    
    #查找原有tomcat是否在运行
    tomcat_target=`find /apps/ -name ${tomcat_name}`
    
    if [  -d "${tomcat_target}" ]
    then 
        #找到旧tomcat,将会先杀4死旧服务
        echo "${tomcat_name} arealy  exists ,will stop ,and remove \n"
    
        #查找原有服务
        oldPid=`lsof -i:${port} | grep java |awk -F " " '{ print $2}' `
    
        #如果原服务存在,先杀死原服务
        if [ -n "${oldPid}" ]
            then
                `kill -9 "${oldPid}"`
            else
                echo "old pid is null\n"
            fi
    
        rm -rf ${tomcat_target}
        
    else
        #没找到旧tomcat,将会创建新服务
        echo "${tomcat_name}  not exist,create new tomcat\n"
    fi
    
    cp -r ${base_tomcat}  /apps/${tomcat_name}
    
    #等待10秒,等待复制完成
    sleep 10
    
    #启动服务
    sh /apps/${tomcat_name}/bin/startup.sh 
    
    
    #删除临时tomcat
    rm -rf ${base_tomcat}
    
    echo "部署工程${JOB_NAME}完成"
    
    #等待10秒,等待复制完成
    sleep 10
    
    exit 0
    
    
    

    实例二 jenkins远程自动自动化部署脚本

    。。。

    相关文章

      网友评论

          本文标题:linux shell编程学习--实例讲解

          本文链接:https://www.haomeiwen.com/subject/bkmtkqtx.html