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已不适配于现在
Shell脚本用得好,日常运维不用愁
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



