在 Arch linux 上启动 Neo4j 服务器时出错
Posted
技术标签:
【中文标题】在 Arch linux 上启动 Neo4j 服务器时出错【英文标题】:Error on neo4j server start on arch linux 【发布时间】:2014-12-09 23:22:46 【问题描述】:我有一个 arch linux 设置并通过 arch 用户存储库 (yaourt -S neo4j
) 安装了 neo4j,并且我能够很好地运行 Web 控制台(sudo neo4j console
具有看似正常的输出和完整的功能),但是在尝试时启动服务器(sudo neo4j start
),我遇到以下错误消息:
/usr/share/neo4j/bin/utils: line 345: [: -lt: unary operator expected
Using additional JVM arguments: -server -XX:+DisableExplicitGC -Dorg.neo4j.server.properties=/etc/neo4j/neo4j-server.properties -Djava.util.logging.config.file=/etc/neo4j/logging.properties -Dlog4j.configuration=file:/etc/neo4j/log4j.properties -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled
Starting Neo4j Server...cat: /run/neo4j/neo4j-service.pid: No such file or directory
process []... waiting for server to be ready. Failed to start within 120 seconds.
Neo4j Server may have failed to start, please check the logs.
rm: cannot remove ‘/run/neo4j/neo4j-service.pid’: No such file or directory
在打印错误消息之前没有延迟,所以它似乎不是超时。我对 neo4j 很陌生(我使用 Web 控制台阅读了相当多的用户手册,但没有开发或服务器配置经验),所以我不太确定还有什么相关的。我尝试查看 utils 脚本,错误似乎是它尝试 su neo4j
的位置,但它似乎也继续尝试启动服务器。我还尝试更改它在this question 中启动的端口,但没有任何变化。我能找到的唯一日志一遍又一遍(带有适当的时间戳):
Oct 15, 2014 1:33:49 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.9 09/02/2011 11:17 AM'
任何帮助都将不胜感激!
编辑: 它失败的第 345 行是这个 sn-p 的结尾:
if [ $UID == 0 ] ; then
OPEN_FILES=`su $NEO4J_USER -c "ulimit -n"`
else
OPEN_FILES=`ulimit -n`
fi
if [ $OPEN_FILES -lt 40000 ]; then
通过进行一些回显调试,su $NEO4J_USER
似乎失败了,可能是因为 $NEO4J_USER 设置为 neo4j,我的系统上不存在该用户。我尝试将其设置为其中一个配置文件的根,但显然这无法正常工作。 Arch 对我来说是一种持续的学习体验,但我之前不需要添加新用户来让软件工作。
【问题讨论】:
【参考方案1】:这里有趣的是:
/usr/share/neo4j/bin/utils: line 345: [: -lt: unary operator expected
我认为这是由于 neo4j 用户的默认 shell 错误造成的。当前为neo4j
系统用户设置了什么默认值?尝试将其切换为 bash。启动脚本应该可以很好地与 bash 配合使用。
【讨论】:
嗨 Stefan,我在我的问题中为该行添加了一些上下文。我不认为这是一个 bash 问题,但它肯定与 neo4j 用户的错误配置有关(因为他不存在)。我曾尝试将默认用户设置为 root,但这似乎对我不起作用。我现在不在相关机器,但是如果您有什么建议,我今晚可以尝试一些东西! 有机会看看!貌似用户是yaourt创建的,shell设置为/bin/false!好电话,斯特凡!接受作为答案,因为我现在有一个 neo4j 服务器!谢谢! 对 Arch Linux 了解不多。但是在 Debian/Ubuntu 上,当通过包管理器 (apt-get) 安装 neo4j 时,会创建一个 neo4j 用户。我想拱门也应该发生同样的情况。 附录:请注意,neo4j 的 arch linux 软件包不是由 neo4j 团队自己维护的,因此您可能需要联系软件包维护者,请参阅 aur.archlinux.org/packages/neo4j以上是关于在 Arch linux 上启动 Neo4j 服务器时出错的主要内容,如果未能解决你的问题,请参考以下文章
spnavcfg - Arch Linux 中的 SpaceNavigator