#!/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. 【Linux】Linux下安装RabbitMQ服务

    一.安装步骤 1)安装erlang yum install -y erlang2)安装rabbitmq-serveryum install -y rabbitmq-server3)开启rabbitmq ...

  2. jenkins部署java项目(五)

    一.web server安装jdk+tomcat其中jdk可以为openjdk,版本1.8 1.1 安装jdk环境 方式一:直接使用yum安装openjdk # * 方式二:本地安装在oracle官网 ...

  3. jmeter中设置线程数与设置集合点的区别

    1.设置线程数: 表示10秒内启动50个线程, 运行结果如下:10秒内启动了50个线程 2.设置集合点: Number of Simulated Users to Group by:50,表示集合50 ...

  4. libimobiledevice的安装与使用

    说明:libimobiledevice相当于安卓的adb,可以使用命令对ios应用进行安装卸载等操作. 在MacOS下安装libimobiledevice: $ brew uninstall idev ...

  5. java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

    java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 是引用对象的地址值不能变,引用变量所指向的对象的内容是可以改变. final变量永远指向这个对象,是一个常量指针,而 ...

  6. linux环境下nohup的执行jar

    java -jar XXX.jar &命令结尾没有 “&” ,则变成 “java -jar XXX.jar ” ,表示在当前ssh窗口,可按CTRL + C打断程序运行,或者直接关闭窗 ...

  7. Tasking

    Put your plan on the tick list, and set the completion time limit, daily repetition, etc. according ...

  8. cockroachdb docker-compose 本地集群运行以及prometheus监控

    cockroachdb 官方提供的是一个直接使用docker 运行的方式,但是使用docker-compose 会比较方便,可以快速搭建一个集群 同时官方也提供了prometheus 的metrics ...

  9. React的基本使用

    一.初始化和安装依赖 ①建立项目文件夹 mkdir react-democd react-demo ②在项目里执行命令:初始项目 npm init -y ③安装相关依赖 npm install --s ...

  10. Markdown&Latex学习笔记,qwq

    目录 推荐的文章 居中 字体 加颜色 指数 分数 根号 神奇的符号(不要多想qwq) 箭头 小于号 大括号 累加符号 累乘符号 下标 \(\phi\)&\(\varphi\) \(\equiv ...