# 1.脚本介绍 结合定时任务可每十分钟检索运行的docker容器,如果存在挂掉的容器则全部停止,并按顺序重启容器 # 2.自动重启docker 由于docker等命令是属于root用户下的,在非root.../bin/bash # 运行日志路径 seqLog=/home/summer/dkstart.log TF1=$(docker inspect --format '{{.State.Running}}...各容器正常">> $seqLog else # 不正常则停止所有docker容器 docker stop $(docker ps -aq) until [ $# -eq 0 ]; do...=$(docker inspect --format '{{.State.Running}}' $1) until [ "${if_exist}" = "true" ]; do if_exist...启动成功">> $seqLog echo "等待60s--------------------------">> $seqLog sleep 60 shift done
启动镜像 docker run -it 镜像ID /bin/bash 可以看到生成镜像时自动挂载的,数据卷目录 以上dockerfile方式属于匿名挂载数据卷 清理docker使用空间 我个人使用的是单核...prune --filter "until=24h" 数据卷永远不会自动删除,因为这样做可能会破坏数据 删除未使用的数据卷 docker volume prune 删除没有使用过的网络 docker...尝试方法一(不建议使用): 删除所有容器 删除所有镜像 重新运行一个新的容器并挂载数据卷 # 1 docker rm -f $(docker ps -aq) # 2 docker rmi...结论: 无法解决问题,且删除所有容器、镜像存在的风险较大,不建议使用!...,技术、产品兴趣广泛且浓厚,等待着一个创业机会。
脚本来检查它是否正在运行,如果没有,则启动它。...在UNIX中,有充分的理由只能等待子进程。任何试图解决这个问题的方法(ps解析、pgrep、存储PID等)都是有缺陷的,其中存在漏洞。待后文分析。...因为只有启动你的进程的进程才能可靠地等待它结束。而这在Bash中很容易实现。 until procA; do echo "procA crashed with exit code $?....." >&2 sleep 1 done 上面的bash代码在一个until循环中运行procA。第一行启动procA并等待它结束。当它结束时,until检查其退出状态。...如果退出状态不是0,until将运行循环体,该循环体在STDERR上发出错误消息,并在 1 秒后重新启动循环(返回第 1 行)。 我们为什么要等一会儿?
循环 until 条件测试操作 do 命令序列 done 3.1、示例1、计算1-50的和值 通过循环累加的方式计算1-50的和值 #!.../bin/bash i=0 sum=0 until [ $i -gt 50 ] do sum=$[sum+i] let i++ done echo "1-50的和为 $sum " 3.2...$i is offline" >> /root/shell4/host_ip_offline.txt fi }& #增加&符号,代表的是将进程放到后台处理,后台命令之间是不区分先来后到关系的 done...#执行wait,等待上面所有后台进程执行完毕后,才会执行后面的语句 #没有wait,后面语句不会等待后台进程的,会对一些需要上下文依赖关系的程序执行错误 wait cat /root/shell4/...5.3、continue 终止某次循环的执行,但是不会完全终止整个循环 while until循环中使用需要谨慎,因为continue放在变量迭代语句前会造成死循环 发布者:全栈程序员栈长,
} 调用完 jws start 之后, 用 ps a 命令查看, 可以看到如下进程: # ps PID TTY TIME CMD 1 pts/0 00:00:00 bash..., 则表示 Jexus 服务器正在运行。...等待应用关闭 由于 Docker 是单进程的, 如果 Jexus 服务关闭了, Docker 进程也应该退出, 所以需要一个函数来判断 Jexus 服务器的运行。...SIGTERM to the container's # PID 1 when it tries to stop the container. since Bash doesn't # pass this...: # begin the server startup process. start_jws echo "Listening for termination signals..." # loop until
while read name do echo $name done until…do…done循环 当条件为真时结束。...命令格式: until condition do 语句1 语句2 ... done 示例,当用户输入yes或者YES时结束,否则一直等待读入。...continue命令 跳出当前循环。...1_0.tar # 将镜像加载到本地 docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0 # 创建并运行docker_lesson...地址 然后,可以仿照上节课内容,创建工作账户acs。
/bin/bash,指明bash为脚本解释器。 ---- 学习技巧 不要死记硬背,遇到含糊不清的地方,可以在AC Terminal里实际运行一遍。...while read name do echo $name done ---- until…do…done循环 当条件为真时结束。...命令格式: until condition do 语句1 语句2 ... done 示例,当用户输入yes或者YES时结束,否则一直等待读入。...工作区是独立于各个分支的。 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。...1_0.tar # 将镜像加载到本地 docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0 # 创建并运行docker_lesson
[TOC] 0x07 shell编程选择分支 描述:我们学过的每一种高级编程语言,都在存在流程/分支选择/循环等结构,同样shell编程中也有这是与windows上的bat编程不一样的点;shell选择分支嵌套建议不超过三层...until 语句 描述:until 循环用于不断执行一系列命令(为真停止),也用于从输入文件中读取数据;命令通常为测试条件。...Tips:一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用。 until 循环执行一系列命令直至条件为 true 时停止。...until 循环与 while 循环在处理方式上刚好相反。.../bin/bash a=0 until [ !
新建工作目录 目录命名为班级加姓名的格式,如 1banz3 参考代码: mkdir 1banz3 # 切到 1banz3 目录: cd 1banz3 2. for 循环结构 新建 for.sh 脚本,输入以下代码.../bin/bash n=1 while [ "$n" -lt 10 ] do echo $n n=$((n+2)) done while循环使用了条件测试语句作为循环条件,变量 n<10...时重复循环体语句,也就是打出n的当前值,并随后令 n=n+2 解释运行脚本,参考运行结果如下: 1 3 5 7 9 4. until 循环结构 新建 until.sh 脚本,输入以下代码: #.../bin/bash read -p "press y/Y to stop..." input until [ "$input" = "Y" -o "$input" = "y" ] do read -...until 表示判断结果为true(也就是退出状态为0)时,退出循环,否则重复循环体语句。
/0),因此在当前终端下的所有进程的 PPID 都是-bash 的 PID,比如执行命令、运行脚本。...int从0开始,每次循环处理时,int加1。运行上述脚本,返回数字1到5,然后终止。 #!...for (( ; ;)) until循环 until 循环执行一系列命令直至条件为 true 时停止。...until 循环与 while 循环在处理方式上刚好相反。 一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。...以下实例我们使用 until 命令来输出 0 ~ 9 的数字: #!/bin/bash a=0 until [ !
但bash是解释型语言(还有编译型语言),所以变量的定义非常宽泛,在定义时可以不不指明变量类型,使用时在指明就可以了。...=:不等于则为真 单目: -n String: 是否不空,不空则为真,空则为假 -z String: 是否为空,空则为真,不空则假 3、条件测试语句和循环语句 3.1、if语句 格式: (1) 一般...循环 until 的用法跟 while 的类似,只是在 until 后面的语句为假的时候执行循环体。...或者 for (( ; ; )) 或者 until false; do command done 4.5、循环中的控制语句 (1)break 命令: 用来从循环中强行退出,但不退出程序。...7、陷阱信号 当程序运行时,按下 Control-C 或者 Control-/后程序就立刻终止,但很多时候当不希望信号到达时程序就立刻停止运行,而是希望忽略这个信号继续运行下去或者在程序退出前做些清除操作
-t(terminal):告诉docker为容器建立一个命令行终端。 --name:指定容器名称,可以不填(随机),建议根据具体使用功能命名,便于管理。...进入容器 docker exec是需要容器处于运行中且进程也处于运行中才能执行的操作。...命令执行后会进入容器的默认工作目录 docker exec -it container_id /bin/bash -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端 比如我们进入到运行...这里的"成功启动"是指容器处于up至少10秒且已经处于docker监管。这是避免没有成功启动的容器陷入restart的死循环。...=100 CONTAINER_ID #查看某个事件段的log sudo docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12
commandN ;; esac case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。.../bin/sh int=1 while(( $int<=5 )) do echo $int let "int++" done 运行脚本,输出: 1 2 3 4 5 使用中使用了 Bash...; )) until 循环 until 循环执行一系列命令直至条件为 true 时停止。...until 循环与 while 循环在处理方式上刚好相反。 一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。...以下实例我们使用 until 命令来输出 0 ~ 9 的数字: #!/bin/bash a=0 until [ !
每个中高级DBA都需要掌握一些简单脚本的编写,这样才能从繁杂重复的基础维护工作中解脱出来,才能有时间去研究更有价值的技术。...顺序执行 分支判断 循环结构 巩固练习 1.顺序执行 练习1:用户选择输入Y/N,不区分大小写,根据用户输入屏幕打印不同内容。 考查:read,[],exit 0,&&,echo #!...while do done, until do done(不定循环) 练习5:输入名字直到输入的名字是“Alfred”为止。.../bin/bash #Usage: Input the name until it is "Alfred"....\n" 4.巩固练习 1.用分支判断哪些数据库默认端口在运行.
例如,sh 或 bash 可以很好地工作,因为它们是交互式 shell,而像 tail 或 sleep 这样的命令则不支持交互式输入,因此 -i 选项对它们无效。...--until:显示指定时间前的日志。--tail:指定最后显示的日志条目数量。如果不设置,默认会显示所有可用的日志。...注意事项docker export 命令导出的是容器的文件系统,不包括容器的运行状态或配置。导出和导入的过程不包含容器的网络配置或存储卷。...docker restart 的选项-t, --time:指定重启前等待的时间(单位为秒)。如果不指定此参数,Docker 默认会等待 10 秒。...默认等待时间:如果不指定 -t 参数,Docker 会默认等待 10 秒。
Docker的常用命令 底层原理 Docker是如何工作的 Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器...而docker由于直接利用宿主机的操作系统,则省略了等待过程,因此新建一个docker容器只需要几秒钟。...如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像 列出本地主机上的镜像 docker images [OPTIONS]...docker run -it centos /bin/bash 列出当前所有正在运行的容器 docker ps [OPTIONS] OPTIONS说明(常用): -a...版本号 wait Block until a container stops, then print its exit code # 截取容器停止时的退出状态值 今天的分享就到这里啦
本章讨论bash shell的循环命令for、while和until 13.1 for命令 重复执行一系列命令在编程中很常见。 bash shell提供了for命令,允许你创建一个遍历一系列值的循环。...运行就好了。...13.4 until命令 和while相反。until命令要求你指定一个通常返回非0退出状态码的测试命令。 只有测试命令退出状态码不为0,bash shell才会执行循环中列出的命令。.../bin/bash 2 # until test 3 var=100 4 until [ $var -lt 0 ] # 满足条件则结束,不满足则进循环 5 # -eq ==... 13 done 14 done 注意break和continue的区别: break用于完全结束一个循环,后面的循环也不执行了。
选择执行 编程语言分类 编译型语言 解释型语言(shell是一种解释型语言) 图片 运行脚本 给予执行权限,通过具体的文件路径指定文件执行 直接运行解释器,将脚本作为解释器程序的参数运行 bash...‐s : 对于一些特殊的符号不打印的情况 ‐t :用于表示等待输入的时间(s),等待时间超过,将继续执行后面的脚本 练习1:提示为:"input your name:",输入姓名后,进行输出 #!...循环 while的是条件是测真值,until的条件式测假值 语法 until 条件测试;do 循环体 done 练习1:99乘法表 #while 写法 当判断条件为真则运行下面的内容 #!.../bin/bash first= second= until ((first > )) do until ((second > first)) do let chicken=${first...-ne ];then #如果重启后mysqld运行状态不正常 while true;do let num_restart_mysqld++ #记录重启次数来确定最高循环五次
## docker的垃圾清理 ### 清理停止的容器 当我们使用`docker stop $ContainerName`命令停止容器的时候,系统并不知道会删除这个容器,除非在运行此容器的时候设置了`-...```bash # docker container prune --filter "until=24h" ``` ### 清除不使用的镜像 通过执行`docker images prune`命令可以清除所有不再使用的镜像...```bash # docker image prune -a --filter "until=24h" ``` ### 删除存储卷 存储卷可以被一个或者多个容器使用,也会占据磁盘空间。...```bash # docker volume prune WARNING!...```bash # docker network prune --filter "until=24h" ``` ### 删除所有的对象(镜像,容器,网络,数据卷) 通过docker system prune
6.until循环 until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。...一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。...以下实例我们使用 until 命令来输出 0 ~ 9 的数字: #!/bin/bash a=0 until [ !...commandN ;; esac case 工作方式如上所示,取值后面必须为单词 in,每一模式必须以右括号结束。...continue echo "游戏结束" ;; esac done 运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo "游戏结束"
领取专属 10元无门槛券
手把手带您无忧上云