zookeeper.out nohup: failed to run command `java': No such file or directory

本文详细记录了在启动Zookeeper过程中遇到的环境变量错误,并提供了具体的解决方案,包括检查和修改JAVA_HOME路径,确保Zookeeper能够正常运行。

查看zookeeper.out

[work@xxx zookeeper-3.4.6]$cat zookeeper.out
nohup: failed to run command `/usr/java/jdk1.8.0_65//bin/java': No such file or directory

这里可以看到是系统的环境变量有问题了!!!

查看系统环境变量

[work@xxx zookeeper-3.4.6]$ export
declare -x CVS_RSH="ssh"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HISTTIMEFORMAT="%F %T work "
declare -x HOME="/home/work"
declare -x JAVA_HOME="/usr/java/jdk1.8.0_65/"

果然TM有问题!

修改系统环境变量

[work@xxx zookeeper-3.4.6]$ export JAVA_HOME=/usr

再次启动zookeeper

[work@xxx zookeeper-3.4.6]$ bin/zkServer.sh start
JMX enabled by default
Using config: /home/work/soft/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

我的是自己账户不可以切换成root就可以了,用户之间的环境不一样导致

<think>好的,用户的问题是ZooKeeper的日志文件zookeeper.out不存在,需要解决方案以及如何配置日志文件路径。首先,我需要回忆一下ZooKeeper的日志配置机制。 首先,ZooKeeper默认的日志输出可能确实会写入zookeeper.out,但具体路径可能因安装方式或启动脚本的不同而变化。例如,如果用户是通过命令行启动,可能直接在当前目录生成该文件,但如果是通过服务或后台启动,路径可能不同。这时候需要检查启动方式,比如是否使用了nohup或者重定向了输出。 接下来,用户可能需要修改日志配置。ZooKeeper使用Log4j来管理日志,所以应该查看log4j.properties文件。默认情况下,日志可能被配置为输出到控制台,而如果使用某些启动脚本(比如zkServer.sh),可能会将控制台输出重定向到zookeeper.out。如果用户修改了Log4j的配置,将日志输出到文件,那么zookeeper.out可能就不会被生成。需要检查Log4j的配置文件,确认日志输出路径是否正确,比如是否有设置RollingFileAppender,并指定了正确的文件路径。 另外,用户可能想自定义日志路径。这时候需要指导他们修改log4j.properties中的日志文件路径,例如将log4j.appender.ROLLINGFILE.File设置为新的路径,并重启ZooKeeper服务。同时,要提醒用户确保ZooKeeper有权限写入该路径,避免权限问题导致日志无法生成。 还有可能用户的环境变量或启动脚本中有覆盖,比如在zkServer.sh中修改了ZOO_LOG_DIR变量,这会影响日志文件的存放位置。需要检查这些脚本,确认是否有设置ZOO_LOG_DIR或者其他相关环境变量,导致日志输出到其他目录。 最后,需要考虑到用户可能没有正确查看日志文件的位置,比如在服务模式下,日志可能被系统重定向到其他位置,或者使用systemd管理的服务,日志可能由journalctl管理。这时候需要根据不同的启动方式,指导用户查找正确的日志路径。 总结来说,解决方案应该包括检查默认路径、修改Log4j配置、自定义日志路径、检查启动脚本和环境变量,以及处理权限问题。同时,要提醒用户修改配置后需要重启服务,并验证日志是否生成。此外,生成相关问题可以帮助用户进一步了解日志管理和ZooKeeper的其他常见问题,比如如何配置日志滚动、日志级别调整,以及如何解决其他异常如ConnectionLossException或NodeExistsException,这些都与日志和配置相关,可能用户后续会遇到。</think>### ZooKeeper日志文件zookeeper.out不存在的解决方案 #### 1. 检查默认日志路径 ZooKeeper默认将日志输出到$**ZOO_LOG_DIR**目录下的$zookeeper.out$文件中。若未显式配置,默认路径可能为: - **直接启动时**:日志输出到当前终端或启动目录的$zookeeper.out$ - **通过脚本启动**(如$zkServer.sh$):日志通常位于ZooKeeper安装目录的$**logs**$子目录下 > 示例路径:$/opt/zookeeper-3.7.0/logs/zookeeper.out$ #### 2. 配置日志路径 在$**conf/zoo.cfg**$中显式指定日志目录: ```properties dataDir=/var/lib/zookeeper dataLogDir=/var/log/zookeeper # 事务日志目录 # 添加以下配置 ZOO_LOG_DIR=/var/log/zookeeper # 控制台输出日志目录 ``` 需要确保目录权限正确: $chown -R zookeeper:zookeeper /var/log/zookeeper$ [^3] #### 3. 修改Log4j配置 通过$**conf/log4j.properties**$控制日志输出方式: ```properties # 默认控制台输出 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender # 改为文件输出 log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLINGFILE.File=/var/log/zookeeper/zookeeper.log log4j.appender.ROLLINGFILE.MaxFileSize=10MB log4j.appender.ROLLINGFILE.MaxBackupIndex=10 ``` #### 4. 检查启动脚本 在$**bin/zkServer.sh**$中确认是否重定向了输出: ```bash # 查找以下配置 ZOO_LOG_DIR="$ZOOKEEPER_PREFIX/logs" _ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out" ``` #### 5. 权限验证 通过以下命令检查目录权限: ```bash ls -ld /var/log/zookeeper # 预期输出 drwxr-xr-x 2 zookeeper zookeeper 4096 Jun 15 10:00 /var/log/zookeeper ``` #### 6. 日志重定向(临时方案) 启动时手动指定输出路径: ```bash nohup ./zkServer.sh start > /custom/path/zookeeper.out 2>&1 & ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值