场景
线上环境, 当服务器重启时需要elasticsearch跟随启动,但es正常情况下不能root启动。
思路
将es写入服务, 跟随服务启动
实现
- 脚本,创建
/etc/init.d/elasticsearch
并写入以下内容:
#!/bin/bash
#
#chkconfig: 345 63 37
#description: elasticsearch
#processname: elasticsearch-6.*
ES_HOME=/usr/local/elasticsearch/elasticsearch-6.8.13
case $1 in
start)
su - es -c "$ES_HOME/bin/elasticsearch -d -p pid"
echo "elasticsearch is started"
;;
stop)
pid=`cat $ES_HOME/pid`
kill -9 $pid
echo "elasticsearch is stopped"
;;
restart)
pid=`cat $ES_HOME/pid`
kill -9 $pid
echo "elasticsearch is stopped"
sleep 1
su - es -c "$ES_HOME/bin/elasticsearch -d -p pid"
echo "elasticsearch is started"
;;
*)
echo "start|stop|restart"
;;
esac
exit 0
脚本中es为启动elasticsearch的用户
- 使此文件可以执行
chmod 777 ./elasticsearch
- 加入服务中
chkconfig --add elasticsearch
- 手动操作
# 启动/关闭/重启
service elasticsearch start/stop/restart