几例实用shell脚本分享

16 篇文章 6 订阅

日常工作中经常涉及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。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口Linux

众筹植发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值