在linux上启动neo4j服务器时出错

时间:2014-10-15 01:40:47

标签: linux neo4j archlinux su

我有一个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对我来说是一种持续的学习体验,但我不需要在软件工作之前添加新用户。

1 个答案:

答案 0 :(得分:2)

这里有趣的一行是:

/usr/share/neo4j/bin/utils: line 345: [: -lt: unary operator expected

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