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脚本,将复杂的命令简单化,并做进一步的封装处理,能高效解决任务重复冗余、耗时长、繁琐低效等很多问题。
#往期推荐#
更多精彩内容,“码”上了解!↓
Shell脚本用得好,日常运维不用愁
本文2024-09-23 01:12:24发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144455.html