我有一个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行就是这个片段的结尾:
if [ $UID == 0 ] ; then
OPEN_FILES=`su $NEO4J_USER -c "ulimit -n"`
else
OPEN_FILES=`ulimit -n`
fi
if [ $OPEN_FILES -lt 40000 ]; then
从做一些echo调试,似乎su $NEO4J_USER
失败了,可能是因为$ NEO4J_USER被设置为neo4j,这是我系统上不存在的用户。我尝试将其设置为root其中一个配置文件,但显然这样做不正常。 Arch对我来说是一种持续的学习体验,但我不需要在软件工作之前添加新用户。
答案 0 :(得分:2)
这里有趣的一行是:
/usr/share/neo4j/bin/utils: line 345: [: -lt: unary operator expected
我认为这是由neo4j用户的错误默认shell引起的。当前为neo4j
系统用户设置了什么默认值?尝试将其切换为bash。启动脚本应该与bash很好地协同工作。