欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Elasticsearch?自動(dòng)重啟腳本創(chuàng)建實(shí)現(xiàn)

 更新時(shí)間:2023年08月09日 11:13:37   作者:志哥  
這篇文章主要為大家介紹了Elasticsearch?自動(dòng)重啟腳本創(chuàng)建實(shí)現(xiàn)詳解分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

產(chǎn)品需求

應(yīng)產(chǎn)品要求,讓寫(xiě)個(gè)es的自動(dòng)重啟的腳本,如果es掛了,要在分分鐘之內(nèi)重啟,當(dāng)時(shí)我的內(nèi)心是崩潰的,像我這種Linux只會(huì)cd、 ls 的哪會(huì)寫(xiě)什么腳本啊,無(wú)奈,只能去谷歌了,邊看邊改,沒(méi)想到還真給寫(xiě)出來(lái)了,貌似還不難,是不是有什么漏洞我就母雞了。

es自動(dòng)重啟,首先要知道es是怎么啟的,下載,配置,啟動(dòng),這里就略過(guò)了。直接看腳本吧。

創(chuàng)建腳本

首先創(chuàng)建個(gè)sh文件,es_monitor.sh,內(nèi)容很簡(jiǎn)單,判斷es進(jìn)程是否存在,存在就算了,不存在就重啟。

#!/bin/bash
cd `dirname $0`
BIN_DIR=`pwd`
# jdk路徑,這里有個(gè)坑,下文會(huì)講
export JAVA_HOME=/home/pangu/soft/jdk1.8.0_111
# 獲取es進(jìn)程ID,我的es目錄是/home/pangu/app/elastic/elasticsearch-master
ES_ID=`ps -ef |grep elasticsearch |grep -w 'elasticsearch-master'|grep -v 'grep'|awk '{print $2}'`
#啟動(dòng)腳本目錄
StartES=/home/pangu/app/elastic/elasticsearch-master/bin/elasticsearch
# 日志輸出
ESMonitorLog=$BIN_DIR/es-master-monitor.log
Monitor()
{
  if [[ $ES_ID ]];then # 這里判斷ES進(jìn)程是否存在
    echo "[info]當(dāng)前ES進(jìn)程ID為:$ES_ID"
  else
    echo "[error]ES進(jìn)程不存在!ES開(kāi)始自動(dòng)重啟..."
    sh $StartES -d
  fi
}
Monitor>>$ESMonitorLog

crontab 定時(shí)任務(wù)

crond 是 Linux 下用來(lái)周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個(gè)守護(hù)進(jìn)程。

當(dāng)前用戶(pangu)下crontab -e,把下面這個(gè)放進(jìn)去,保存,路徑是自己腳本的路徑,一分鐘檢測(cè)一次。ps: es默認(rèn)不能用root啟動(dòng),這里所說(shuō)用戶都是pangu。

*/1 * * * * /bin/sh /home/pangu/app/elastic/es-monitor/es_monitor.sh

遇到的問(wèn)題

過(guò)程中遇到了一個(gè)問(wèn)題,./bin/elasticsearch -d直接啟動(dòng)es是可以的 ,直接運(yùn)行es_monitor.sh 也是可以的,如果es進(jìn)程被殺死,是會(huì)啟動(dòng)的,但是用crontab怎么都不行,一直報(bào) JAVA_HOME 找不到的問(wèn)題。

Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME

而 pangu 用戶的.bash_profile里面是配的有 Java環(huán)境變量的啊,想不通就去求助Linux大神旭哥了,旭哥看到后,表示很無(wú)語(yǔ),罵了一句傻逼,說(shuō)這都是最基礎(chǔ)的東西。原來(lái)我配置在 pangu 用戶下的.bash_profile Java環(huán)境變量在 cron 下是不生效的,去網(wǎng)上查了一下,發(fā)現(xiàn)好多人都被這個(gè)環(huán)境變量的問(wèn)題坑過(guò),crontab會(huì)以用戶的身份執(zhí)行配置的命令,但是不會(huì)加載用戶的環(huán)境變量。這個(gè)可以用交互、非交互shell來(lái)解釋,.bash_profile是交互的,以login的方式進(jìn)入bash運(yùn)行的。

什么是交互式模式呢?就是shell等待你的輸入,并且立即執(zhí)行你提交的命令。這種模式被稱作交互式是因?yàn)閟hell與用戶進(jìn)行交互。這種模式也是大多數(shù)用戶非常熟悉的:登錄、執(zhí)行一些命令、簽退。當(dāng)你簽退后,shell也終止了。而非交互式模式,是以shell script(非交互)方式執(zhí)行的,在這種模式下,shell不與你進(jìn)行交互,而是讀取存放在文件中的命令,并且執(zhí)行它們,當(dāng)它讀到文件的結(jié)尾,shell也就終止了??梢?jiàn)我們的crontab是非交互的模式。這樣就懂了吧,看來(lái)要好好學(xué)學(xué)Linux了,噗噗噗。

以上就是Elasticsearch 自動(dòng)重啟腳本實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Elasticsearch 重啟腳本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java與MySQL導(dǎo)致的時(shí)間不一致問(wèn)題分析

    Java與MySQL導(dǎo)致的時(shí)間不一致問(wèn)題分析

    在使用MySQL的過(guò)程中,你可能會(huì)遇到時(shí)區(qū)相關(guān)問(wèn)題,本文主要介紹了Java與MySQL導(dǎo)致的時(shí)間不一致問(wèn)題分析,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java中的集合工具類Collections詳解

    Java中的集合工具類Collections詳解

    這篇文章主要介紹了Java中的集合工具類Collections詳解,java.utils.Collections是集合工具類,用來(lái)對(duì)集合進(jìn)行操作,不是Collection集合的根接口,這個(gè)要區(qū)分開(kāi)來(lái),需要的朋友可以參考下
    2024-01-01
  • Java?多線程并發(fā)LockSupport

    Java?多線程并發(fā)LockSupport

    這篇文章主要介紹了Java?多線程并發(fā)LockSupport,LockSupport?類是用于創(chuàng)建鎖和其他同步類的基本線程阻塞原語(yǔ),更多相關(guān)內(nèi)容需要得小伙伴可以參考一下下面文章內(nèi)容
    2022-06-06
  • JAVA 根據(jù)設(shè)置的概率生成隨機(jī)數(shù)的方法

    JAVA 根據(jù)設(shè)置的概率生成隨機(jī)數(shù)的方法

    本篇文章主要介紹了JAVA 根據(jù)設(shè)置的概率生成隨機(jī)數(shù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • mybatisplus報(bào)錯(cuò):Invalid bound statement(not found)問(wèn)題及解決

    mybatisplus報(bào)錯(cuò):Invalid bound statement(not fou

    文章主要介紹了在使用MyBatis-Plus時(shí)遇到的`Invalid bound statement (not found)`錯(cuò)誤的幾種常見(jiàn)原因和解決方法,包括namespace路徑不一致、函數(shù)名或標(biāo)簽id不一致、構(gòu)建未成功、掃包配置錯(cuò)誤以及配置文件書(shū)寫(xiě)錯(cuò)誤
    2025-02-02
  • spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實(shí)現(xiàn)定時(shí)任務(wù)

    spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實(shí)現(xiàn)定時(shí)任務(wù)

    這篇文章主要介紹了spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實(shí)現(xiàn)定時(shí)任務(wù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Java基礎(chǔ)之如何學(xué)好Java

    Java基礎(chǔ)之如何學(xué)好Java

    這篇文章已經(jīng)是有數(shù)年“網(wǎng)齡”的老文,不過(guò)在今天看來(lái)仍然經(jīng)典。如何學(xué)習(xí)java?本篇文章可以說(shuō)也是面對(duì)編程初學(xué)者的一篇指導(dǎo)文章,其中對(duì)于如何學(xué)習(xí)Java的步驟的介紹,很多也適用于開(kāi)發(fā)領(lǐng)域其他技能的學(xué)習(xí)。
    2014-10-10
  • 實(shí)例解決Java異常之OutOfMemoryError的問(wèn)題

    實(shí)例解決Java異常之OutOfMemoryError的問(wèn)題

    在本篇文章中,我們給大家分享了關(guān)于解決Java異常之OutOfMemoryError的問(wèn)題的方法,有此需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • SpringCloud Alibaba使用Seata處理分布式事務(wù)的技巧

    SpringCloud Alibaba使用Seata處理分布式事務(wù)的技巧

    在傳統(tǒng)的單體項(xiàng)目中,我們使用@Transactional注解就能實(shí)現(xiàn)基本的ACID事務(wù)了,隨著微服務(wù)架構(gòu)的引入,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行分庫(kù)分表,每個(gè)服務(wù)擁有自己的數(shù)據(jù)庫(kù),這樣傳統(tǒng)的事務(wù)就不起作用了,那么我們?nèi)绾伪WC多個(gè)服務(wù)中數(shù)據(jù)的一致性呢?跟隨小編一起通過(guò)本文了解下吧
    2021-06-06
  • java中單雙斜杠的使用圖文詳解

    java中單雙斜杠的使用圖文詳解

    JAVA中的斜杠有正斜杠與反斜杠之分,正斜杠,一般就叫做斜杠,下面這篇文章主要給大家介紹了關(guān)于java中單雙斜杠使用的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評(píng)論