#!/bin/bash

#镜像名
image="asr-server"
#镜像版本
ver="5.2.1"
#容器名
dname="asr" #资源目录配置
if [ $# -eq ] ; then
echo $
rfile=$
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 ] ; then
cat >> /etc/security/limits.conf << EOF
* soft nofile
* hard nofile
EOF
fi #校验docker是否安装
docker images > /dev/null >&
if [ $? -ne ];then
echo "Please install docker first ."
exit
fi #打印提示信息
echo -e "check environment successful ." } #备份资源文件
function backup
{
#打印提示信息
echo -e "start backup old resources ..." #校验资源文件是否存在
if [ ! -d $rfile ] ; then
echo "${rfile} not exist ."
exit
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字符串操作的更多相关文章

  1. linux shell 字符串操作(长度,查找,替换)详解

    linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...

  2. linux shell 字符串操作

    转:http://justcoding.iteye.com/blog/1963463 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作 ...

  3. linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略 ...

  4. (正则表达式)linux shell 字符串操作(长度,查找,替换,匹配)详解

    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略 ...

  5. linux shell 字符串操作详解(获取长度、查找,替换)

    在做shell批处理程序时候,常常会涉及到字符串相关操作.有许多命令语句,如:awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,大家知道,使用内部操作符会省 ...

  6. linux shell 字符串操作(长度,查找,替换)

    感谢原创,文章很有帮助. 转自:http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html 一.判断读取字符串值 表达式 含义 ${v ...

  7. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

  8. Shell字符串操作

    @1:子串削除 ${string#substring} 从$string 的开头位置截掉最短匹配的$substring. ${string##substring} 从$string 的开头位置截掉最长 ...

  9. linux shell字符串内置的常用操作(获取长度、查找、替换)

    在编写shell程序时,经常会涉及到字符串相关操作.有许多命令语句,如awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,使用内部操作符会省略启动外部程序等时 ...

随机推荐

  1. Kali -关闭防火墙

    kali关闭防火墙前需要安装ufw 安装 apt-get install ufw 关闭 ufw disable # To disable the firewall 开启 ufw enable # To ...

  2. Beta冲刺第6次

    二.Scrum部分 1. 各成员情况 翟仕佶 学号:201731103226 今日进展 新增图像拼接合并功能 存在问题 无 明日安排 视情况而定 截图 曾中杰 学号:201731062517 今日进展 ...

  3. 记一次wxpy开发经历

    常在河边走,哪有不湿鞋,没想到搞这个花了半天时间.

  4. Linux 修改时区(PDT修改为CST)

    方法1: Linux 修改时区 本文链接:https://blog.csdn.net/Aritem/article/details/79213306 命令:tzselect 按照顺序依次输入5,9,1 ...

  5. php静态方法

    静态方法 (1)静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性: (2)从当前类(不是子类)中访问静态方法或属性,可以使用 self 关键字,self 指向当前类,就 ...

  6. redis 哨兵集群原理及部署

    复制粘贴自: https://www.cnblogs.com/kevingrace/p/9004460.html 请点击此链接查看原文. 仅供本人学习参考, 如有侵权, 请联系删除, 多谢! Redi ...

  7. Centos7.x for aarch64 下载地址

    ARM64架构系统 CentOS7镜像下载源 http://archive.kernel.org/centos-vault/altarch/ 例如:centos7.5 http://archive.k ...

  8. list数组排序 Collections 按Date时间降序排列

    @ResponseBody @RequestMapping(value = {"K12", "12"}) public String refurbishLigh ...

  9. Navicat连接oracle,出现Only compatible with oci version 8.1

    与本地oracle连接的时候,一般没问题,sqlplus和oci都是本地oracle自带的,(设置: 工具->选项->oci) 分别为:     oci:D:\app\pcman\prod ...

  10. AsyncAPI 几个方便的工具

    AsyncAPI 类似openapi 也提供了一些周边工具 editor 类似openapi 的,但是目前官方已经不推荐使用了,推荐使用playground,以下是构建一个容器镜像 clone 代码 ...