You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7中Elasticsearch7.17.0启动失败求助(sd_notify错误-13)

Elasticsearch 7.17.0在CentOS 7启动失败:sd_notify返回错误-13

问题概述

在CentOS 7系统中安装Elasticsearch 7.17.0后无法启动实例,配置文件保持默认未修改。错误日志显示sd_notify returned error [-13],底层是对libsystemd.so.0的原生调用失败,推测与systemd服务相关。

错误日志

[2023-11-24T09:05:44,263][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: sd_notify returned error [-13] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.17.0.jar:7.17.0] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:157) ~[elasticsearch-7.17.0.jar:7.17.0] at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) ~[elasticsearch-7.17.0.jar:7.17.0] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) ~[elasticsearch-cli-7.17.0.jar:7.17.0] at org.elasticsearch.cli.Command.main(Command.java:77) ~[elasticsearch-cli-7.17.0.jar:7.17.0] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:122) ~[elasticsearch-7.17.0.jar:7.17.0] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) ~[elasticsearch-7.17.0.jar:7.17.0] Caused by: java.lang.RuntimeException: sd_notify returned error [-13] at org.elasticsearch.systemd.SystemdPlugin.onNodeStarted(SystemdPlugin.java:127) ~[?:?] at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] at org.elasticsearch.node.Node.start(Node.java:1280) ~[elasticsearch-7.17.0.jar:7.17.0] at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:335) ~[elasticsearch-7.17.0.jar:7.17.0] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:443) ~[elasticsearch-7.17.0.jar:7.17.0] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:166) ~[elasticsearch-7.17.0.jar:7.17.0]

问题分析

错误码-13对应systemd的权限错误(EPERM/EACCES),原因通常是:

  • Elasticsearch未以systemd服务方式启动,但默认启用的systemd插件尝试向systemd发送状态通知,此时进程无法访问systemd的通知套接字
  • 运行Elasticsearch的用户权限不足,无法与systemd通信

解决方案

1. 以systemd服务方式启动

默认安装Elasticsearch时会自动生成systemd服务文件,直接通过systemd管理启动:

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch  # 设置开机自启

验证状态:

sudo systemctl status elasticsearch

2. 禁用systemd插件

如果不需要通过systemd管理Elasticsearch,可直接禁用systemd插件:
编辑Elasticsearch配置文件/etc/elasticsearch/elasticsearch.yml,添加以下配置:

node.attr.systemd.enabled: false

保存后重新启动Elasticsearch:

sudo systemctl restart elasticsearch

3. 检查进程权限

  • 确保以elasticsearch用户运行进程,禁止用root用户直接启动:
    sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch
    
  • 手动启动时systemd的NOTIFY_SOCKET环境变量不存在,此时禁用systemd插件即可避免错误

内容的提问来源于stack exchange,提问作者Balaji Padmanabhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:02:06