elasticsearch 无法在 ubuntu 15.10 中启动服务

Posted

技术标签:

【中文标题】elasticsearch 无法在 ubuntu 15.10 中启动服务【英文标题】:elasticsearch can't start service in ubuntu 15.10 【发布时间】:2016-05-15 22:11:05 【问题描述】:

我正在尝试在我的系统上设置 elasticsearch。我安装了它,但似乎该过程没有开始。我无法通过 curl 获得响应。 我读到了一些关于 pid owner 设置不正确的问题,尝试了这些步骤,但它仍然无法正常工作。 如果我将“set -x”放入 /etc/init.d/elasticsearch 并尝试

/etc/init.d/elasticsearch 重启

我得到这个输出

root@sid-laptop:/etc/init.d# /etc/init.d/elasticsearch restart
+ 身份证 -u
+ [ 0 -ne 0 ]
+ . /lib/lsb/init 函数
+ 运行部件 --lsbsysinit --list /lib/lsb/init-functions.d
+ [ -r /lib/lsb/init-functions.d/01-upstart-lsb ]
+ . /lib/lsb/init-functions.d/01-upstart-lsb
+ 取消设置 UPSTART_SESSION
+ _RC_SCRIPT=/etc/init.d/elasticsearch
+ [ -r /etc/init//etc/init.d/elasticsearch.conf ]
+ _UPSTART_JOB=弹性搜索
+ [ -r /etc/init/elasticsearch.conf ]
+ [ -r /lib/lsb/init-functions.d/20-left-info-blocks ]
+ . /lib/lsb/init-functions.d/20-left-info-blocks
+ [ -r /lib/lsb/init-functions.d/40-systemd ]
+ . /lib/lsb/init-functions.d/40-systemd
+ _use_systemctl=0
+ [ -d /run/systemd/system ]
+ [-n]
+ [ 6714 -ne 1 ]
+ [-z]
+ [-z]
+ readlink -f /etc/init.d/elasticsearch
+ _use_systemctl=1
+ prog=弹性搜索
+ 服务=elasticsearch.service
+ systemctl -p CanReload 显示 elasticsearch.service
+ [ CanReload=否 = CanReload=否]
+ [重启=重新加载]
+ [ 1 = 1 ]
+ 设置 +e
+ 设置 +u
+ [ xrestart = xstart -o xrestart = xstop -o xrestart = xrestart -o xrestart = xreload -o xrestart = xforce-reload -o xrestart = xstatus ]
+ systemctl_redirect /etc/init.d/elasticsearch 重启
+ 当地人
+ 本地 rc
+ 本地 prog=elasticsearch
+ 本地命令=重启
+ s=重启elasticsearch(通过systemctl)
+ 服务=elasticsearch.service
+ systemctl -p LoadState 显示 elasticsearch.service
+ 状态=LoadState=已加载
+ [加载状态=加载=加载状态=屏蔽]
+ systemctl is-system-running
+ 输出=运行
+ [重启=状态]
+ log_daemon_msg 重启elasticsearch(通过systemctl)elasticsearch.service
+ [ -z 重新启动弹性搜索(通过 systemctl)]
+ log_daemon_msg_pre 重启elasticsearch(通过systemctl)elasticsearch.service
+ log_use_fancy_output
+ TPUT=/usr/bin/tput
+ EXPR=/usr/bin/expr
+ [ -t 1 ]
+ [ xxterm-256color != x ]
+ [ xxterm-256color != xdumb ]
+ [ -x /usr/bin/tput ]
+ [ -x /usr/bin/expr ]
+ /usr/bin/tput hpa 60
+ /usr/bin/tput setaf 1
+ [-z]
+ 花式=1
+ 真
+ /bin/echo -n [....]
[....] + [ -z elasticsearch.service ]
+ echo -n 重启elasticsearch(通过systemctl):elasticsearch.service
重启elasticsearch(通过systemctl):elasticsearch.service+ log_daemon_msg_post 重启elasticsearch(通过systemctl)elasticsearch.service
+ :
+ /bin/systemctl 重启 elasticsearch.service
警告:磁盘上的 elasticsearch.service 已更改。运行“systemctl daemon-reload”重新加载单元。
+ rc=0
+ [重启=状态]
+ log_end_msg 0
+ [ -z 0 ]
+ 本地返回值
+ retval=0
+ log_end_msg_pre 0
+ log_use_fancy_output
+ TPUT=/usr/bin/tput
+ EXPR=/usr/bin/expr
+ [ -t 1 ]
+ [ xxterm-256color != x ]
+ [ xxterm-256color != xdumb ]
+ [ -x /usr/bin/tput ]
+ [ -x /usr/bin/expr ]
+ /usr/bin/tput hpa 60
+ /usr/bin/tput setaf 1
+ [ -z 1 ]
+ 真
+ 真
+ /usr/bin/tput setaf 1
+ 红=
+ /usr/bin/tput setaf 2
+ 绿色=
+ /usr/bin/tput setaf 3
+ 黄色=
+ /usr/bin/tput 操作
+ 正常=
+ /usr/bin/tput 公民
+ /usr/bin/tput sc
+ /usr/bin/tput hpa 0
+ [ 0 -eq 0 ]
+ /bin/echo -ne [好的
[ 好的 + /usr/bin/tput rc
+ /usr/bin/tput 标准
+ log_use_fancy_output
+ TPUT=/usr/bin/tput
+ EXPR=/usr/bin/expr
+ [ -t 1 ]
+ [ xxterm-256color != x ]
+ [ xxterm-256color != xdumb ]
+ [ -x /usr/bin/tput ]
+ [ -x /usr/bin/expr ]
+ /usr/bin/tput hpa 60
+ /usr/bin/tput setaf 1
+ [ -z 1 ]
+ 真
+ 真
+ /usr/bin/tput setaf 1
+ 红=
+ /usr/bin/tput setaf 3
+ 黄色=
+ /usr/bin/tput 操作
+ 正常=
+ [ 0 -eq 0 ]
+回声。
.
+ log_end_msg_post 0
+ :
+ 返回 0
+ 返回 0
+ 退出 0

尝试了一整天,仍然无法解决这个问题。 “ps -A”也没有显示弹性搜索过程。 请帮忙。

更多信息: 我试过了

sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --default.config=/etc/elasticsearch/elasticsearch.yml --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch
/ 它给: sid@sid-laptop:/etc/init.d$ sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid --default.config=/etc/elasticsearch/ elasticsearch.yml --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path .work=/tmp/elasticsearch --default.path.conf=/etc/elasticsearch [sudo] sid 的密码: sid@sid-laptop:/etc/init.d$ 1.6.2: pid 失败... - FileNotFoundException[/var/run/elasticsearch.pid(权限被拒绝)] java.io.FileNotFoundException:/var/run/elasticsearch.pid(权限被拒绝) 在 java.io.FileOutputStream.open0(本机方法) 在 java.io.FileOutputStream.open(FileOutputStream.java:270) 在 java.io.FileOutputStream.(FileOutputStream.java:213) 在 java.io.FileOutputStream.(FileOutputStream.java:162) 在 org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:194) 在 org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32

【问题讨论】:

最可能的权限问题:在与其他用户一起运行并崩溃后尝试与用户 elasticsearch 一起运行。什么显示 sudo ls -la /var/run/elasticsearch.pid ?同时重新加载 systemd sudo systemctl daemon-reload 并粘贴纯文本(不是终端输出,因为它无法读取) “ls: 无法访问 /var/run/elasticsearch.pid: 没有这样的文件或目录”的结果 ":"ls: 无法访问 /var/run/elasticsearch.pid: 没有这样的文件或目录" 我没明白你说的纯文本是什么意思? 我的意思是/etc/init.d/elasticsearch restart的输出看起来不像典型的文本输出,但更像是$TERM或直接粘贴完整输出而不是文本输出的问题。无论如何,它现在不相关。好的。您能否检查/var/run 是否存在,实际上是一个目录(不是符号链接或文件)并且用户elasticsearch 有权写入该目录(类似于sudo -u elasticsearch ls -la /var/runsudo -u elasticsearch touch /var/run/testelasticsearch 和之后sudo -u elasticsearch rm /var/run/testelasticsearch var/run 是我认为的符号链接...它在运行的文件夹图标上显示一个箭头... 【参考方案1】:

Ubuntu 不允许管理员以外的其他用户写入 /var/run,这是有充分理由的。

您是否注意到 elasticsearch 是由 elasticsearch 在安装时创建的“elasticsearch”用户启动的:

sudo -u elasticsearch....

因此,我相信最好的解决方案是在 /var/run 文件夹中创建一个新文件夹,而不是更改所有用户的 /var/run 权限或尝试为 elasticsearch 用户授予管理员权限

sudo mkdir /var/run/elasticsearch/

并赋予elasticsearch用户权限

sudo chown elasticsearch:elasticsearch /var/run/elasticsearch 

在您需要更改 elasticsearch 初始化脚本以编写此新文件夹的 pid 文件后

sudo vim /etc/init.d/elasticsearch 

将属性 PID_FILE 更新为

PID_FILE=/var/run/elasticsearch/$NAME.pid

这对我有用。我希望它对你有用;)

【讨论】:

谢谢,您的方法非常有效。我不明白的是我从 1.7.2 升级到 elasticsearch 1.7.3 后才遇到这个问题。在此之前,elasticsearch 可以正常工作。你呢?再次感谢。 嘿。在我看来,这是一次旧的尝试,很抱歉我忘记了我在这个版本中使用的版本。请小心将此视为一种解决方法。我相信这不是最好的解决方案,因为我们不应该搞乱 /etc/init.d/。 知道了。谢谢。

以上是关于elasticsearch 无法在 ubuntu 15.10 中启动服务的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 16.04 安装 ElasticSearch 5.x,启动失败

Elasticsearch无法从远程主机连接

ubuntu 20.04部署elasticsearch 8.*(安装es)

如何从服务器访问ElasticSearch?

使用非嵌入式数据库时,SonarQube 无法在 Ubuntu 上运行。 (弹性搜索无法启动)

Linux进阶Ubuntu安装ElasticSearch