上下文
service elasticsearch start
,因为elasticsearch用户失败,但它委派的实际调用没有。根据我所学到的,厨师脚本以root身份运行。因此,当测试失败时(它通过运行service elasticsearch status
检查弹性搜索是否正在运行),我登录到流浪汉机器。作为root用户,如果我运行service elasticsearch start
,我会收到一个OK(这是不正确的,但是另一个issue),然后运行后续的service elasticsearch status
,我遇到了错误: elasticsearch dead but pid file exists
进一步深入,我在由service
运行的init.d脚本上设置调试语句,并看到实际命令基本上是对init.d/functions
函数{{1}的调用},只是打电话:
daemon
所以我尝试了一个runuser -s /bin/bash elasticsearch -c 'ulimit -S -c 0 >/dev/null 2>&1 ; /usr/share/elasticsearch/bin/elasticsearch -p /var/run/elasticsearch/elasticsearch.pid -d -Des.default.path.home=/usr/share/elasticsearch -Des.default.path.logs=/var/log/elasticsearch/ -Des.default.path.data=/data/elasticsearch/data/ -Des.default.path.work=/tmp/elasticsearch -Des.default.path.conf=/etc/elasticsearch/'
,然后在引号中运行了部分:
sudo su - elasticsearch
随后的[elasticsearch@default-centos ~]$ ulimit -S -c 0 >/dev/null 2>&1 ;
/usr/share/elasticsearch/bin/elasticsearch
-p /var/run/elasticsearch/elasticsearch.pid -d
-Des.default.path.home=/usr/share/elasticsearch
-Des.default.path.logs=/var/log/elasticsearch/
-Des.default.path.data=/data/elasticsearch/data/
-Des.default.path.work=/tmp/elasticsearch
-Des.default.path.conf=/etc/elasticsearch/
显示弹性搜索运行正常!我甚至将记录设置为TRACE,并且没有迹象表明elasticsearch已经崩溃。