在 arch linux 上 Neo4j 服务器启动时出错

Jar*_*ver 5 linux su neo4j archlinux

我有一个 arch linux 设置并通过 arch 用户存储库 ( yaourt -S neo4j) 安装了 neo4j,并且我能够正常运行 Web 控制台(sudo neo4j console具有看似正常的输出和完整功能),但是当尝试启动服务器 ( sudo neo4j start) 时,我遇到如下错误信息:

\n\n
/usr/share/neo4j/bin/utils: line 345: [: -lt: unary operator expected\nUsing 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\nStarting Neo4j Server...cat: /run/neo4j/neo4j-service.pid: No such file or directory\nprocess []... waiting for server to be ready. Failed to start within 120 seconds.\nNeo4j Server may have failed to start, please check the logs.\nrm: cannot remove \xe2\x80\x98/run/neo4j/neo4j-service.pid\xe2\x80\x99: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

在打印错误消息之前没有延迟,因此似乎是超时以外的原因。我对 Neo4j 很陌生(我使用 Web 控制台阅读了相当多的用户手册,但没有开发或服务器配置经验),所以我不太确定还有什么可能相关。我尝试查看 utils 脚本,错误似乎出现在它尝试启动的位置su neo4j,但它似乎也继续尝试启动服务器。我还尝试更改它在这个问题中启动的端口,但没有改变。我能找到的唯一日志就是一遍又一遍(带有适当的时间戳):

\n\n
Oct 15, 2014 1:33:49 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate\nINFO: Initiating Jersey application, version \'Jersey: 1.9 09/02/2011 11:17 AM\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

任何帮助将不胜感激!

\n\n

编辑:\n失败的第 345 行是此片段的结尾:

\n\n
if [ $UID == 0 ] ; then\n  OPEN_FILES=`su $NEO4J_USER -c "ulimit -n"`\nelse\n  OPEN_FILES=`ulimit -n`\nfi    \nif [ $OPEN_FILES -lt 40000 ]; then\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过进行一些回显调试,似乎su $NEO4J_USER失败了,可能是因为 $NEO4J_USER 设置为 neo4j,这是我的系统上不存在的用户。我尝试将其设置为根目录之一的配置文件,但显然这无法正常工作。Arch 对我来说是一种持续的学习体验,但我之前不需要添加新用户就可以让软件运行。

\n

Ste*_*ter 3

这里有趣的一行是:

/usr/share/neo4j/bin/utils: line 345: [: -lt: unary operator expected
Run Code Online (Sandbox Code Playgroud)

我认为这是由 neo4j 用户的默认 shell 错误引起的。当前为系统用户设置的默认值是什么neo4j?尝试将其切换为 bash。启动脚本应该可以很好地与 bash 配合使用。