我有一个arch linux设置并通过arch用户存储库安装neo4j(yaourt -S neo4j),我能够很好地运行web控制台(sudo neo4j控制台具有看似正常的输出和完整功能),但是当我尝试启动时服务器(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对我来说是一个持续的学习体验,但我不必在使用软件之前添加新用户.
解决方法:
这里有趣的一行是:
/usr/share/neo4j/bin/utils: line 345: [: -lt: unary operator expected
我认为这是由neo4j用户的错误默认shell引起的.当前为neo4j系统用户设置了什么默认值?尝试将其切换为bash.启动脚本应该与bash很好地协作.
标签:linux,neo4j,su,archlinux
来源: https://codeday.me/bug/20190703/1362863.html