zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    H3BPM子表的复制
    vue规格新增一对多的例子
    vue自制switch滑块
    table垂直居中
    css清楚浮动的class
    网页之间的参数传递
    调用get_str_time(时间), 就能把毫秒的时间转换成格式化的 ,转化时间戳的方法
    css实现照片上传的加号框
    递归函数获得n个不重复的随机数
    随机生成n个不重复的数,范围是2-32,并让其在新页面打开
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/11946046.html
Copyright © 2011-2022 走看看