资讯专栏INFORMATION COLUMN

Elasticsearch 自动重启脚本,同样适用于其他应用

cheukyin / 1185人阅读

摘要:自动重启,首先要知道是怎么启的,下载,配置,启动,这里就略过了。当前用户下把下面这个放进去,保存,路径是自己脚本的路径,一分钟检测一次。默认不能用启动,这里所说用户都是。这种模式被称作交互式是因为与用户进行交互。当你签退后,也终止了。

应产品要求,让写个es的自动重启的脚本,如果es挂了,要在分分钟之内重启,当时我的内心是崩溃的,像我这种Linux只会cdls 的哪会写什么脚本啊,无奈,只能去谷歌了,边看边改,没想到还真给写出来了,貌似还不难,是不是有什么漏洞我就母鸡了。

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了,噗噗噗。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10145.html

相关文章

  • Elasticsearch 自动重启脚本同样适用其他应用

    摘要:自动重启,首先要知道是怎么启的,下载,配置,启动,这里就略过了。当前用户下把下面这个放进去,保存,路径是自己脚本的路径,一分钟检测一次。默认不能用启动,这里所说用户都是。这种模式被称作交互式是因为与用户进行交互。当你签退后,也终止了。 应产品要求,让写个es的自动重启的脚本,如果es挂了,要在分分钟之内重启,当时我的内心是崩溃的,像我这种Linux只会cd、 ls 的哪会写什么脚本啊,...

    fnngj 评论0 收藏0
  • Elasticsearch 自动重启脚本同样适用其他应用

    摘要:自动重启,首先要知道是怎么启的,下载,配置,启动,这里就略过了。当前用户下把下面这个放进去,保存,路径是自己脚本的路径,一分钟检测一次。默认不能用启动,这里所说用户都是。这种模式被称作交互式是因为与用户进行交互。当你签退后,也终止了。 应产品要求,让写个es的自动重启的脚本,如果es挂了,要在分分钟之内重启,当时我的内心是崩溃的,像我这种Linux只会cd、 ls 的哪会写什么脚本啊,...

    tracymac7 评论0 收藏0
  • Elasticsearch 参考指南(聚合介绍)

    摘要:聚合介绍聚合框架帮助提供基于搜索查询的聚合数据,它基于称为聚合的简单构建块,可以进行组合以构建复杂的数据摘要。指标对一组文档进行跟踪和计算指标的聚合。管道聚合其他聚合的输出及其相关指标的聚合。 聚合介绍 聚合框架帮助提供基于搜索查询的聚合数据,它基于称为聚合的简单构建块,可以进行组合以构建复杂的数据摘要。 聚合可以看作是在一组文档上构建分析信息的工作单元,执行的上下文定义了这个文档集是...

    Youngs 评论0 收藏0
  • 400+节点的 Elasticsearch 集群运维

    摘要:截止目前我们选择了不升级集群。有了这么多的分片和节点,集群操作有时变得更特殊。我们相信测试本身导致了集群宕机。和的性能高度依赖于具体的查询和数据,没有银弹。考虑使用缓存,包括外缓存和级别的缓存。 本文首发于InfoQ https://www.infoq.cn/article/... 作者:Anton Hägerstrand翻译:杨振涛 目录: 数据量 版本 节点配置 索引结构 性能 ...

    aikin 评论0 收藏0
  • 滴滴 Elasticsearch 多集群架构实践

    摘要:本文给大家分享下滴滴在多集群架构的实践。负责整个集群的元数据管理。任务处理模型,在任务执行完成后,会回调大量处理元数据变更。滴滴平台通过统一管控索引,避免了同一个索引名称出现在连接的多个集群中。 出品 | 滴滴技术作者 |魏子珺 showImg(https://segmentfault.com/img/bVbsMkj?w=1800&h=766); Elasticsearch 是基于 L...

    zengdongbao 评论0 收藏0

发表评论

0条评论

cheukyin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<