Shell脚本用得好,日常运维不用愁

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

Shell脚本用得好,日常运维不用愁

在苍穹环境的日常运维中,你是否常常遇到很多重复、冗余、耗时的工作?比如日志满了、中间件异常、需要反复执行中间件的关闭、重启等操作。

灵活应用Shell脚本可以高效解决上述问题。本期文章以三个典型场景为例,为大家详细介绍Shell脚本在日常运维中的应用方法




典型应用场景


01 一个简单的重启脚本


日常运维过程中,当配置参数发生变化,或者确定服务异常原因后,需通过重启来更新环境和恢复环境。


很多服务或者中间件的重启,需找到安装目录,用命令带参数重启。但是各种软件和命令的参数繁多,记不住相关命令参数时,每次需通过help查询,且查找安装目录又特耗时。面对此情况,我们可以将复杂的命令简单化,做封装处理。


我们可以建一个常用的目录,用Shell脚本编写一个简单的脚本,直接执行脚本即可实现对服务的关闭、启动、重启。比如MC的重启,可以使用Shell脚本做进一步封装,放在自己常用的目录。当然,也可注册成系统服务,用service命令重启。脚本示例如下:


#!/bin/sh
source /etc/profile
#脚本发生错误,终止执行
set -e
cd /var/kingdee/newmc/mservice/bin
start()
{
      source ./kdservice.sh start -d
}
stop()
{
      source ./kdservice.sh stop
}
status() {
       source ./kdservice.sh status
}
debug() {
       export ENABLE_JVMDEBUG=true
       source ./kdservice.sh start -d
}
restart() {
       source ./kdservice.sh restart -d
}
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  debug)
    debug
    ;;
  restart|reload|force-reload)
    restart
    ;;
  status)
    status
    ;;
  *)
esac


后续MC启动的相关命令,只需一步,进入自已常用的目录,执行下述相应命令:


重启MC:sh  mcservice.sh  restart;

关闭MC:sh  mcservice.sh  stop;

查看MC状态:sh  mcservice.sh status。


                                                                              执行命令示例


02 日志清除脚本


在使用服务的过程中,会不断地产生日志,包括运行日志、启动日志、错误日志等等。随着时间的推移,日志的容量会越来越大,导致目录的容量占满,软件无法运行。


以苍穹ELK日志系统举例,当ELK日志容量满了时,该如何解决呢?



用Shell脚本来解决,so easy!


首先,编写相应的Shell脚本,示例如下:


#!/bin/sh
source /etc/profile
#步骤一:杀掉kafka的进程
ID=`ps -ef|grep kafka|grep -v “grep”|awk '{print $2}'`
for  id in $ID
do
   kill -9 $id
   echo "kill $id"
   sleep 5s
done
#步骤二:杀掉elasticsearch的进程
ID=`ps -ef|grep elasticsearch|grep -v “grep”|awk '{print $2}'`
for  id in $ID
do
   kill -9 $id
   echo "kill $id"
   sleep 5s
done
#步骤三:删掉日志
rm -rf  /var/kingdee/data/es_log/data/*
sleep 10s
rm -rf /var/kingdee/esdata/*
sleep 10s
#步骤五:启动elasticsearch
sh /var/kingdee/elk/startelasticsearch.sh
echo "elasticsearch启动成功"



接着,存储Shell脚本文件到自己常用的、熟悉的目录中。


然后,执行sh  es_log_nodes_clear.sh命令即可完成删除日志的操作,一步即可完成,且不需要记住安装目录和启动参数。


执行命令示例


如果不想每次等日志满了后才来删除日志,可以设置一个定时任务,使用crontab命令定时删除。


03 中间件的安装与升级脚本


苍穹中间件的首次安装或者后续升级安装步骤繁多?没关系,Shell脚本助你一臂之力。


比如一年前安装的ZooKeeper已不适配于现在的系统,需要由ZooKeeper-3.4.14升级到ZooKeeper-3.5.9版本。

按照日常的升级方式,需要以下五个步骤:


1下载ZooKeeper-3.5.9的安装软件;

2解压;

3)更改配置文件;

4)配置环境变量;

5)启动。


一步一步地安装,如果安装错了需要重来,或者第二次升级仍然需要重新开始。


将上述的步骤写在Shell脚本中,只需一个执行命令:sh installzk3.5.9.sh /var/kingdee/zk/ ,即可实现一步安装。脚本示例如下:


#/bin/bash
tmp=$1
prefix=${tmp%*/}
#下载zookeeper包并解压
if [ ! -d "$prefix/apache-zookeeper-3.5.9-bin" ]; then
        wget https://downloads.apache.org/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
        tar xf apache-zookeeper-3.5.9-bin.tar.gz -C $prefix
fi
#复制并更改配置文件
cp -rf $prefix/apache-zookeeper-3.5.9-bin/conf/zoo_sample.cfg  $prefix/apache-zookeeper-3.5.9-bin/conf/zoo.cfg
sed -i "s#dataDir=.*#dataDir=$prefix/apache-zookeeper-3.5.9-bin#g" $prefix/apache-zookeeper-3.5.9-bin/conf/zoo.cfg
#配置环境变量
cp -rf /etc/profile /etc/profile-`date +%Y%m%d%H%M%S`
export ZK_HOME=$prefix/apache-zookeeper-3.5.9-bin
export PATH=$ZK_HOME/bin:$PATH
echo "export ZK_HOME=$prefix/apache-zookeeper-3.5.9-bin">>/etc/profile
echo "export PATH=\$ZK_HOME/bin:\$PATH">>/etc/profile
source /etc/profile
#启动
$prefix/apache-zookeeper-3.5.9-bin/bin/zkServer.sh start 
echo "zookeeper-3.5.9  install success"


后续的升级依据脚本做修改即可,省时高效。


划重点


Shell脚本重复性操作、定时执行、自动化运维、批量处理等方面具备非常高的应用价值,通过灵活应用Shell脚本,将复杂的命令简单化,并做进一步的封装处理,能高效解决任务重复冗余、耗时长、繁琐低效等很多问题。




#往期推荐#


# Jmeter高阶系列--四步教你玩转Java请求

Jmeter的高阶系列——Beanshell脚本

一篇揭秘"苍穹OpenAPI接口测试"的好文!

Jmeter高阶系列—数据参数化及使用场景


更多精彩内容,“码”上了解!↓




Shell脚本用得好,日常运维不用愁

在苍穹环境的日常运维中,你是否常常遇到很多重复、冗余、耗时的工作?比如日志满了、中间件异常、需要反复执行中间件的关闭、重启等操作。...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息