码迷,mamicode.com
首页 > 系统相关 > 详细

Linux shell字符串操作

时间:2019-11-27 23:49:17      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:mamicode   backup   test   for   注意   容器   please   amp   ase   

技术图片

 

#!/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

 

Linux shell字符串操作

标签:mamicode   backup   test   for   注意   容器   please   amp   ase   

原文地址:https://www.cnblogs.com/zhanggaofeng/p/11946046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!