最近做了个MAGENTO2的网站Elasticsearch总是偶尔莫名挂掉导致网站不能正常运行。使用了宝塔的 进程守护管理器 发现真的很难用各种BUG而且无法启动,再三尝试未果无心恋战决定放弃,使用Bash计划任务来监控Elasticsearch进程。
首先我们要找到Elasticsearch的进程名字,执行命令:top
打开宝塔计划任务新建计划任务:
脚本内容:
ERR_LOGFILE="/www/wwwlogs/es.log"
#获取当前时间 注意 这个符号可以赋值 ``
CUR_TIME=`date +'%Y-%m-%d %H-%M-%S'`
pgrep -x java &> /dev/null
if [ $? -ne 0 ];then
bash /www/server/panel/script/rememory.sh
systemctl start elasticsearch.service
#-f 判断文件存在
if [ -f $ERR_LOGFILE ]
then
// >> 追加写入 >直接写入 覆盖
echo "Es异常执行重启-- $CUR_TIME" >> /www/wwwlogs/es.log;
else
echo -e "Es异常执行重启-- $CUR_TIME\n" > /www/wwwlogs/es.log;
fi
else
if [ -f $ERR_LOGFILE ]
then
// >> 追加写入 >直接写入 覆盖
echo "Es正常运行-- $CUR_TIME" >> /www/wwwlogs/es.log;
else
echo -e "Es正常运行-- $CUR_TIME\n" > /www/wwwlogs/es.log;
fi
fi
保存;
代码大逻辑是:在wwwlog下写入日志:
当进程中找不到java也就是ES的进程则运行宝塔清理内存的脚本,然后再执行ES启动命令;
测试:
执行命令关掉ES:
systemctl stop elasticsearch.service
然后点击计划任务的立即执行:
再执行命令,查看ES当前状态:
systemctl status elasticsearch.service
如果结果是acticating则表示启动成功