• Linux shell字符串操作


    #!/bin/bash
    
    #镜像名
    image="asr-server"
    #镜像版本
    ver="5.2.1"
    #容器名
    dname="asr"
    
    #资源目录配置
    if [ $# -eq 1 ] ; then
        echo $1
        rfile=$1
    else
        #资源文件路径
        rfile="/mnt/resource/test/server/resources"
    fi
    
    #日志目录解析
    logfile="${rfile%/*}/log"
    if [ ! -d $logfile ] ; then
        mkdir -p $logfile
    fi
    
    #环境检测
    function check_environment
    {
        #打印提示信息
        echo -e "start check environment ..."
        
        #设置最大文件描述符
        nfile=`ulimit -n`
        #知识点1:屏幕输入写法
        if [ $nfile -lt 102400 ] ; then
            cat >> /etc/security/limits.conf << EOF
    * soft nofile 102400
    * hard nofile 102400
    EOF
        fi
    
        #校验docker是否安装
        docker images > /dev/null 2>&1
        if [ $? -ne 0 ];then
            echo "Please install docker first ."
            exit 0
        fi
        
        #打印提示信息
        echo -e "check environment successful ."
        
    }
    
    #备份资源文件
    function backup
    {
        #打印提示信息
        echo -e "start backup old resources ..."
        
        #校验资源文件是否存在
        if [ ! -d $rfile ] ; then
            echo "${rfile} not exist ."
            exit 0
        fi
        
        #按日期备份
        file_name=${rfile##*/}
        #知识点2:日期相关语法
        back_name="/tmp/${file_name}_$(date +%Y%m%d%H).tgz"
        #tar主要支持相对路径备份,如果要备份绝对路径需要使用 -P 选项
        tar -zcPf ${back_name} ${rfile}
        
        #清空资源目录下文件
        rm -rf "${rfile}/*"
        
        #打印提示信息
        echo -e "backup old resources successful ."
    }
    
    #镜像文件安装
    function intasll
    {
        #打印提示信息
        echo -e "start intasll ..."
        
        #停止旧容器
        container=$(docker ps|grep ${dname} | awk '{print $1}')
        for i in $container
        do
            docker stop $i
            docker rm $i
        done
        #打印提示信息
        echo -e "stop old container successful ."
        
        #备份资源文件
        backup
    
        #解压文件到临时目录
        tar -zxf ./resources/resources.tgz -C ./tmp
    
        #强制拷贝
        /usr/bin/cp -rf ./tmp/resources/* ${rfile}/
        
        #清理临时目录
        rm -rf ./tmp/*
        
        #获取当前镜像版本
        cur_image=`docker images | grep ${image} | awk '{print $2}'`
        
        #知识点3:注意字符串为空判断  "shell变量" 需要加双引号
        if [ -n "$cur_image" ] ; then
            for j in $cur_image
            do
                if [ "$j" = "$ver" ] ; then
                    echo "${image}:${ver} already exist ."
                    exit 0
                fi
            done
        fi
        
        #安装新镜像
        docker load -i "./server/${image}.tar"
    
        #启动容器
        docker run -p 50053:50053 -v $rfile:/home/asr/resources -v ${logfile}:/opt/asr/log -d --name ${dname} ${image}:${ver}
        
        #打印提示信息
        echo -e "start docker successful ."
    }
    
    check_environment
    intasll
  • 相关阅读:
    goweb-goweb基础
    玩转Git
    程序爱好者的常用网站
    高等数学思维导图——6.微分方程
    前端趣玩——超炫的聚光灯效果
    Python课程笔记(四)
    高等数学思维导图——5.多元函数微分法及其应用
    算法很美(四)
    第五章——定积分必记公式
    十大经典排序算法
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/11946046.html
Copyright © 2020-2023  润新知