Elasticsearch 自动重启脚本创建实现
产品需求
应产品要求,让写个es的自动重启的脚本,如果es挂了,要在分分钟之内重启,当时我的内心是崩溃的,像我这种Linux只会cd
、 ls
的哪会写什么脚本啊,无奈,只能去谷歌了,边看边改,没想到还真给写出来了,貌似还不难,是不是有什么漏洞我就母鸡了。
es自动重启,首先要知道es是怎么启的,下载,配置,启动,这里就略过了。直接看脚本吧。
创建脚本
首先创建个sh文件,es_monitor.sh
,内容很简单,判断es进程是否存在,存在就算了,不存在就重启。
#!/bin/bash cd `dirname $0` BIN_DIR=`pwd` # jdk路径,这里有个坑,下文会讲 export JAVA_HOME=/home/pangu/soft/jdk1.8.0_111 # 获取es进程ID,我的es目录是/home/pangu/app/elastic/elasticsearch-master ES_ID=`ps -ef |grep elasticsearch |grep -w 'elasticsearch-master'|grep -v 'grep'|awk '{print $2}'` #启动脚本目录 StartES=/home/pangu/app/elastic/elasticsearch-master/bin/elasticsearch # 日志输出 ESMonitorLog=$BIN_DIR/es-master-monitor.log Monitor() { if [[ $ES_ID ]];then # 这里判断ES进程是否存在 echo "[info]当前ES进程ID为:$ES_ID" else echo "[error]ES进程不存在!ES开始自动重启..." sh $StartES -d fi } Monitor>>$ESMonitorLog
crontab 定时任务
crond 是 Linux 下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。
当前用户(pangu)下crontab -e
,把下面这个放进去,保存,路径是自己脚本的路径,一分钟检测一次。ps: es默认不能用root启动,这里所说用户都是pangu。
*/1 * * * * /bin/sh /home/pangu/app/elastic/es-monitor/es_monitor.sh
遇到的问题
过程中遇到了一个问题,./bin/elasticsearch -d
直接启动es是可以的 ,直接运行es_monitor.sh
也是可以的,如果es进程被杀死,是会启动的,但是用crontab怎么都不行,一直报 JAVA_HOME 找不到的问题。
Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME
而 pangu 用户的.bash_profile
里面是配的有 Java环境变量的啊,想不通就去求助Linux大神旭哥了,旭哥看到后,表示很无语,骂了一句傻逼,说这都是最基础的东西。原来我配置在 pangu 用户下的.bash_profile
Java环境变量在 cron 下是不生效的,去网上查了一下,发现好多人都被这个环境变量的问题坑过,crontab会以用户的身份执行配置的命令,但是不会加载用户的环境变量。这个可以用交互、非交互shell来解释,.bash_profile
是交互的,以login的方式进入bash运行的。
什么是交互式模式呢?就是shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。而非交互式模式,是以shell script(非交互)方式执行的,在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们,当它读到文件的结尾,shell也就终止了。可见我们的crontab是非交互的模式。这样就懂了吧,看来要好好学学Linux了,噗噗噗。
以上就是Elasticsearch 自动重启脚本实现的详细内容,更多关于Elasticsearch 重启脚本的资料请关注脚本之家其它相关文章!
相关文章
Mybatis Select Count(*)的返回值类型介绍
这篇文章主要介绍了Mybatis Select Count(*)的返回值类型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12SpringBoot配置@Configuration注解和@bean注解
这篇文章主要介绍了SpringBoot配置@Configuration注解和@bean注解,文章围绕主题相关内容展开详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-04-04Java异常--常见方法--自定义异常--增强try(try-with-resources)详解
这篇文章主要介绍了Java异常--常见方法--自定义异常--增强try(try-with-resources)的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-03-03
最新评论