我使用的是腾讯的云服务器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 测试
- 我们不启动,先停止一下试试 😃
[root@tcloud elasticsearch]# ./elasticsearch.sh stop ============停止ElasticSearch================ ./elasticsearch.sh: line 16: kill: (831717) - No such process
- 启动停止一起测试
# 启动 [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文件等。