Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)

我使用的是腾讯的云服务器1核心2G内存,安装的有MySQL数据库,elasticsearch 启动后剩余的内存就捉襟见肘了,为了运行其他服务,需要停止 elasticsearch 服务,这个时候我才发现 elasticsearch 根本就不希望大家停止掉自己【没有停止服务的命令】这里总结一下:

1. 直接启动与停止

启动:

# 切换到 elasticsearch 用户
[root@tcloud ~]# su elasticsearch

# 一般启动
bash-4.2$ /usr/local/elasticsearch/bin/elasticsearch

# 后台启动
bash-4.2$ /usr/local/elasticsearch/bin/elasticsearch -d

停止:

# 一般启动 Ctrl c 【很多非后台启动的服务都是这样停止的】
[root@tcloud bin]# 
[2021-08-03T17:11:25,733][INFO ][o.e.x.m.j.p.NativeController] Native controller process has stopped - no new native processes can be started
[2021-08-03T17:11:25,735][INFO ][o.e.n.Node               ] [M_rq0Xz] stopping ...
[2021-08-03T17:11:25,743][INFO ][o.e.x.w.WatcherService   ] [M_rq0Xz] stopping watch service, reason [shutdown initiated]
[2021-08-03T17:11:25,955][INFO ][o.e.n.Node               ] [M_rq0Xz] stopped
[2021-08-03T17:11:25,955][INFO ][o.e.n.Node               ] [M_rq0Xz] closing ...
[2021-08-03T17:11:25,976][INFO ][o.e.n.Node               ] [M_rq0Xz] closed

# 后台启动
# 查询 elasticsearch 的相关线程【多个】
[root@tcloud bin]# ps -ef | grep elastic
# 停止所有 elasticsearch 相关线程【多个】
[root@tcloud bin]# kill -9 ***

2. 使用PID启动与停止【当然也可以不用shell脚本 直接使用命令】

2.1 配置

前边的方法停止的时候查询到的线程ID是多个,这里只用停掉PID即可,我们编写一个shell脚本来实现启动和停止:

# 添加 pid 
[root@tcloud ~]# vim /usr/local/elasticsearch/pid
    # 写入pid值
    # 我写的是 831717
# 将 pid 文件转到 elasticsearch 用户下【这个很重要】
[root@tcloud elasticsearch]# chown -R elasticsearch ./pid
[root@tcloud elasticsearch]# chgrp -R elasticsearch ./pid
# 添加 elasticsearch.sh 脚本文件 
[root@tcloud ~]# vim /usr/local/elasticsearch/elasticsearch.sh

elasticsearch.sh 文件的内容如下:

#!/bin/bash

if [ $# -ne 1 ]
then
  echo "args number is error!!!"
  exit
fi

case $1 in
"start")
    echo "============启动ElasticSearch================"
    su elasticsearch -c "sh ${ELASTICSEARCH_HOME}/bin/elasticsearch -d -p ${ELASTICSEARCH_HOME}/pid"
    ;;
"stop")
    echo "============停止ElasticSearch================"
    kill `cat ${
    ELASTICSEARCH_HOME}/pid`
    ;;
*)
    echo "args info is error!!!"
    ;;
esac
# 给 shell 脚本赋权限
[root@tcloud ~]# chmod +x /usr/local/elasticsearch/elasticsearch.sh

2.2 测试

  1. 我们不启动,先停止一下试试 :)
    [root@tcloud elasticsearch]# ./elasticsearch.sh stop
    ============停止ElasticSearch================
    ./elasticsearch.sh: line 16: kill: (831717) - No such process
    
  2. 启动停止一起测试
    ```bash

    启动

    [root@tcloud elasticsearch]# ./elasticsearch.sh start
    ============启动ElasticSearch================

验证是否启动成功

[root@tcloud elasticsearch]# ps -ef | grep elastic
root 2082 16917 0 16:25 pts/2 00:00:00 su elasticsearch
elastic+ 2083 2082 0 16:25 pts/2 00:00:00 bash
elastic+ 17031 1 9 17:30 ? 00:00:22 /usr/local/java/bin/java -Xms256m -Xmx256m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.6IpCYVwq -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/usr/local/elasticsearch -Des.path.conf=/usr/local/elasticsearch/config -Des.distribution.flavor=default -Des.distribution.type=tar -cp /usr/local/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -d -p /usr/local/elasticsearch/pid
elastic+ 17053 17031 0 17:30 ? 00:00:00 /usr/local/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
root 17979 2848 0 17:34 pts/1 00:00:00 grep --color=auto elastic

停止并验证【还有一个elasticsearch的线程 但实际上已经关闭了】

[root@tcloud elasticsearch]# ./elasticsearch.sh stop
============停止ElasticSearch================
[root@tcloud elasticsearch]# ps -ef | grep elastic
root 2082 16917 0 16:25 pts/2 00:00:00 su elasticsearch
elastic+ 2083 2082 0 16:25 pts/2 00:00:00 bash
root 18118 2848 0 17:35 pts/1 00:00:00 grep --color=auto elastic
```

3. 总结

elasticsearch.sh 这个脚本修改后可以用到很多服务的启动停止上,比如大数据集群、多个jar文件等。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
69 9
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
12天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
75 34
|
29天前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
40 3
|
1月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
5月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
7月前
|
存储 监控 Java
深入探索Java语言的NIO(New I/O)技术
深入探索Java语言的NIO(New I/O)技术
|
5月前
|
Java
Java中的NIO编程详解
Java中的NIO编程详解
|
5月前
|
Java 大数据
如何在Java中进行网络编程:Socket与NIO
如何在Java中进行网络编程:Socket与NIO
|
5月前
|
Java
Java中的NIO编程详解
Java中的NIO编程详解
下一篇
DataWorks