您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

几例实用shell脚本分享

时间:2021-05-06 14:15:35  来源:今日头条  作者:半路出家的运维攻城狮

日常工作中经常涉及linux环境下的进程以及Docker容器相关的操作,现有几例常用的shell脚本,以供大家学习交流。

 

1进程的启动、关闭、重启

 

应用程序中有master、worker两种角色的进程,在系统维护中,一般编写脚本快速进行进程的启动、关闭和重启操作。

 

1.1 进程启动

 

进程启动脚本 start.sh文件:

#! /bin/bash




proc=$1
if [ -z $proc ]; then
  echo "请输入待启动的进程标识【master / worker】"
  exit
elif [ "master" == $proc ]; then
  echo "start master"
elif [ "worker" == $proc ]; then
  echo "start worker"
else
  echo "进程标识仅限【master / worker】"
  exit
fi




master="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/bash




proc=$1
if [ -z $proc ]; then
  echo "请输入待关闭进程的标识【master / worker】"
  exit
elif [ "master" == $proc ]; then
  echo "stop master"
elif [ "worker" == $proc ]; then
  echo "stop worker"
else
  echo "进程标识仅限【master / worker】"
  exit
fi




master="master-"
worker="worker-"




if [ "master" == $proc ]; then
  ps -ef | grep $master | grep -v grep | gawk '{print($2)}' | xargs kill -9

else 
  ps -ef | grep $worker | grep -v grep | gawk '{print($2)}' | xargs kill -9

fi

说明:

进程的关闭命令中grep -v grep是排除grep那条输出,gawk '{print($2)}'输出进程id。

 

1.3 进程重启

 

进程重启脚本 restart.sh文件:

#! /bin/bash




proc=$1
if [ -z $proc ]; then
  echo "请输入待重启进程标识【master / worker】"
  exit
elif [ "master" == $proc ]; then
  echo "restart master"
elif [ "worker" == $proc ]; then
  echo "restart worker"
else
  echo "进程标识仅限【master / worker】"
  exit
fi




./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 vmware
e91e88d075e3  vmware/harbor-jobservice:v1.5.1       "/harbor/start.sh"       harbor-jobservice
78c41eab50a8  vmware/Nginx-photon:v1.5.1            "nginx -g 'daemon off"   nginx
6baa80c00bed  vmware/harbor-ui:v1.5.1               "/harbor/start.sh"       harbor-ui
38ccca88abe6  vmware/registry-photon:v2.6.2-v1.5.1  "/entrypoint.sh serve"   registry
4f834a7b331a  vmware/harbor-adminserver:v1.5.1      "/harbor/start.sh"       harbor-adminserver
405c83e6b593  vmware/redis-photon:v1.5.1            "docker-entrypoint.sh"   redis
733af6727a6e  vmware/harbor-db:v1.5.1               "/usr/local/bin/docke"   harbor-db
42da8dc53c90  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 stop
e91e88d075e3
78c41eab50a8
6baa80c00bed
38ccca88abe6
4f834a7b331a
405c83e6b593
733af6727a6e
42da8dc53c90


批量删除容器脚本如下:

docker ps -a | grep vmware | gawk '{print($1)}' | xargs docker rm

说明:

脚本中gawk '{print($1)}'输出Docker容器的id。



Tags:shell脚本   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
什么是shellshell是c语言编写的程序,它在用户和操作系统之间架起了一座桥梁,用户可以通过这个桥梁访问操作系统内核服务。 它既是一种命令语言,同时也是一种程序设计语言,你可以...【详细内容】
2021-12-16  Tags: shell脚本  点击:(16)  评论:(0)  加入收藏
如何在Linux环境中加密shell脚本?shell脚本包含密码,不希望其他具有执行权限的人查看shell脚本并获取密码。可以安装使用shc工具,普通用户无法读取shc创建的加密Shell...【详细内容】
2021-11-04  Tags: shell脚本  点击:(40)  评论:(0)  加入收藏
shell脚本是一个命令语言,面向的是操作系统执行。如果写过shell脚本的话,应该体会过编写过程的痛苦。因为shell并不是一个编程语言,并不支持常见的数组,JSON等数据结构,也不支持...【详细内容】
2021-08-09  Tags: shell脚本  点击:(109)  评论:(0)  加入收藏
日常工作中经常涉及Linux环境下的进程以及Docker容器相关的操作,现有几例常用的shell脚本,以供大家学习交流。 1进程的启动、关闭、重启 应用程序中有master、worker两种角色...【详细内容】
2021-05-06  Tags: shell脚本  点击:(227)  评论:(0)  加入收藏
一、脚本今天主要分享一个shell脚本,用来获取linux系统CPU、内存、磁盘IO等信息。#!/bin/bash# 获取要监控的本地服务器IP地址IP=`ifconfig | grep inet | grep -vE 'ine...【详细内容】
2021-03-16  Tags: shell脚本  点击:(204)  评论:(0)  加入收藏
每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar……?边敲边想着都需要追加哪些参数?今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程...【详细内容】
2021-01-18  Tags: shell脚本  点击:(161)  评论:(0)  加入收藏
相信大家在网上一搜,就能搜出很多这样的文章,但我这个不一样哦,我在脚本里加了些自定义的东西(如关闭版本号,修改nginx版本头信息,nginx性能优化等等),可以不用修改直接就可...【详细内容】
2020-12-24  Tags: shell脚本  点击:(132)  评论:(0)  加入收藏
在企业的Liunx运维中,经常需要应用到各种shell脚本,比如Mysql数据库备份Shell脚本和Mysql主从同步监控Shell脚本等等常用企业运维shell脚本。。下面分享两例,希望对大家有帮助...【详细内容】
2020-12-18  Tags: shell脚本  点击:(195)  评论:(0)  加入收藏
在编写脚本的过程中,很多时候都需要我们去设置IP地址,密码之类的变量,为了易用性,我们对这些变量的值都会提供选择范围或者设置随机值以及默认值等。那么如果我们要判断使用脚本...【详细内容】
2020-12-04  Tags: shell脚本  点击:(302)  评论:(0)  加入收藏
Jenkins是一款开源的CI&CD软件, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。JenkinsJenkins基于Java环境,可以部署在windows/Mac OS/linux上,通过其网页...【详细内容】
2020-11-06  Tags: shell脚本  点击:(610)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条