0
点赞
收藏
分享

微信扫一扫

关于es(elasticsearch)的启动脚本编写思路附带一个实例


                               关于elasticsearch的启动脚本编写思路(es的管理规范)

 

elasticsearch是干什么的不用我多说了,一般安装是二进制安装方式,具体的安装不在本文讨论范围,主要是安装后的服务优化之一的开机启动脚本的编写思路。

首先,我们需要明白,es出于安全考虑会禁止使用root账号操作,当然指的主要是启动操作,一般默认,按照惯例是使用普通账号es,该账号需要自己手工新建。而我们平常的运维操作并不是在es账号下面进行,这就使得我们启停服务需要手工切换到普通用户es下,然后执行启动或者停止es命令,这么一番操作显得十分麻烦并且不优雅,因此,我们如果使用脚本来进行这些工作,使得不需要频繁的切换用户,那将是一个很好的事情。

下面首先附上我的一个es的启动脚本:

#!/bin/bash
#chkconfig:2345 60 12
#description: elasticsearch
es_path=/data/soft/software/es
es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
case "$1" in
start)
    su - es -c "$es_path/bin/elasticsearch -d"
    echo "elasticsearch startup"
    ;;
stop)
    kill -9 $es_pid
    echo "elasticsearch stopped"
    ;;
restart)
    kill -9 $es_pid
    su - es -c "$es_path/bin/elasticsearch -d"
    echo "elasticsearch startup"
    ;;
*)
    echo "error choice ! please input start or stop or restart"
    ;;
esac

exit $?

脚本的第二行,是定义服务的启停优先级别,由系统的chkconfig进程控制,第三个数字可以任意,但别太高。

第四,第五行是定义了两个变量,一个是es的安装路径,一个是根据ps -ef命令查询出的pid,这里,变量定义为全局变量,不建议定义为局部变量。

剩下的是case语句,接收命令行参数, 比如,service es start,  这个start 就是传入脚本的参数。  es 用户是前面所新建的普通用户以供es程序使用的用户。

su - es -c "命令", 这个表示脚本内切换es用户一次,并执行-c后面的命令,然后退出es普通用户到当前用户。

剩下的就是case语句的惯用格式,并在每次脚本运行的时候根据传入的外部参数输出提示语句。

 

那么,遇到禁止root运行,必须专用的普通用户才可执行的程序,我们编写的启动脚本都是这么一个套路,1,定义程序的路径,2,定义程序运行时的pid,3,case语句,start,stop,restart,这样的外部参数时,对应的执行动作。4,执行动作每次仅且仅su 切换普通用户一次,同时执行命令,然后返回原用户,根据动作编写相应的命令, 不止es,别的很多程序都可以套用这种方式编写启动脚本。

举报

相关推荐

0 条评论