日常工作中经常涉及linux环境下的进程以及Docker容器相关的操作,现有几例常用的shell脚本,以供大家学习交流 。
1进程的启动、关闭、重启
应用程序中有master、worker两种角色的进程,在系统维护中,一般编写脚本快速进行进程的启动、关闭和重启操作 。
1.1 进程启动
进程启动脚本 start.sh文件:
#! /bin/bashproc=$1if [ -z $proc ]; then echo "请输入待启动的进程标识【master / worker】" exitelif [ "master" == $proc ]; then echo "start master"elif [ "worker" == $proc ]; then echo "start worker"else echo "进程标识仅限【master / worker】" exitfimaster="master-*.jar"worker="worker-*.jar"date=`date +%Y-%m-%d`JAVA="/data/jdk1.8.0_171/bin/java"if [ "master" == $proc ]; then logfile="master."$date".log" nohup $java -jar $master >> $logfile &else logfile="worker."$date".log" nohup $java -jar $worker >> $logfile &fi说明:
该段shell脚本首先判断是否输入master或worker标志,然后根据输入的进程标志启动相应的java进程 。
1.2 进程启动
进程关闭脚本 stop.sh文件:
#! /bin/bashproc=$1if [ -z $proc ]; then echo "请输入待关闭进程的标识【master / worker】" exitelif [ "master" == $proc ]; then echo "stop master"elif [ "worker" == $proc ]; then echo "stop worker"else echo "进程标识仅限【master / worker】" exitfimaster="master-"worker="worker-"if [ "master" == $proc ]; then ps -ef | grep $master | grep -v grep | gawk '{print($2)}' | xargs kill -9else ps -ef | grep $worker | grep -v grep | gawk '{print($2)}' | xargs kill -9fi说明:
进程的关闭命令中grep -v grep是排除grep那条输出,gawk '{print($2)}'输出进程id 。
1.3 进程重启
进程重启脚本 restart.sh文件:
#! /bin/bashproc=$1if [ -z $proc ]; then echo "请输入待重启进程标识【master / worker】" exitelif [ "master" == $proc ]; then echo "restart master"elif [ "worker" == $proc ]; then echo "restart worker"else echo "进程标识仅限【master / worker】" exitfi./stop.sh $1./start.sh $1说明:
进程重启脚本是先调用进程关闭脚本,然后调用进程开启脚本 。
2Docker容器批量操作
2.1 镜像批量保存
harbor镜像批量保存脚本 harbor-save-images.sh文件:
docker save vmware/postgresql-photon:v1.5.1 vmware/photon:1.0 ... | gzip -c > harbor-images.tar.gz在离线环境安装Kubernetes系统时,可能涉及rancher、harbor的镜像批量保存和批量载入操作 。
上面镜像批量保存脚本,会自动打包成harbor-images.tar.gz文件 。
2.2 镜像批量载入
harbor镜像批量保存脚本 harbor-load-images.sh文件:
docker load --input harbor-images.tar.gz镜像批量载入到本机Docker中 。
2.3 容器批量停止、删除
例如将带vmware的Docker容器批量停止
首先查看名称带有vmware的容器进程,脚本如下:
[root@test docker]# docker ps -a | grep vmwaree91e88d075e3 vmware/harbor-jobservice:v1.5.1 "/harbor/start.sh" harbor-jobservice78c41eab50a8 vmware/Nginx-photon:v1.5.1 "nginx -g 'daemon off" nginx6baa80c00bed vmware/harbor-ui:v1.5.1 "/harbor/start.sh" harbor-ui38ccca88abe6 vmware/registry-photon:v2.6.2-v1.5.1 "/entrypoint.sh serve" registry4f834a7b331a vmware/harbor-adminserver:v1.5.1 "/harbor/start.sh" harbor-adminserver405c83e6b593 vmware/redis-photon:v1.5.1 "docker-entrypoint.sh" redis733af6727a6e vmware/harbor-db:v1.5.1 "/usr/local/bin/docke" harbor-db42da8dc53c90 vmware/harbor-log:v1.5.1 "/bin/sh -c /usr/loca" harbor-log
批量停止容器脚本如下:
[root@test docker]# docker ps -a | grep vmware | gawk '{print($1)}' | xargs docker stope91e88d075e378c41eab50a86baa80c00bed38ccca88abe64f834a7b331a405c83e6b593733af6727a6e42da8dc53c90
推荐阅读
- 电脑操作实用400个快捷键
- 小白7天掌握Shell编程:脚本的创建和执行
- Linux 运行Shell程序的方法
- 实用小脚本,教你Python自动化备份邮箱
- 3分钟就能看懂 电脑小白实用购机攻略
- 穿衣搭配|领导们秘而不宣的3款软件,实用强大,办公效率和职场升迁利器
- 揭秘CSS实用技巧总结
- 记某CMS漏洞getshell
- 如何将OFD文件转成Word?教你2种实用方法
- 八种实用的免费游戏开发软件工具
