zookeeper伪分布式错误解决:无法创建目录"/opt/beh/logs": 权限不够

伪分布式的zookeeper启动报错如下:

[text@minion19 bin]$ sh zkServer.sh start ../conf/zk1.cfg

JMX enabled by default

Using config: ../conf/zk1.cfg
/home/text/clusters/zookeeper/zk1
mkdir: 无法创建目录"/opt/beh/logs": 权限不够
Starting zookeeper ... zkServer.sh:行108: /opt/beh/logs/zookeeper/zookeeper.out: 没有那个文件或目录

STARTED


查看zkServer.sh脚本发现:


if [ -z "$ZOOPiIDFILE" ]; then
    ZOO_DATADIR="$(grep "^[[:space:]]*dataDir" "$ZOOCFG" | sed -e 's/.*=//')"
    if [ ! -d "$ZOO_DATADIR" ]; then
        mkdir -p "$ZOO_DATADIR"
    fi
    ZOOPIDFILE="$ZOO_DATADIR/zookeeper_server.pid"
else
    # ensure it Iexists, otw stop will fail
    mkdir -p "$(dirname "$ZOOPIDFILE")"
fi
if [ ! -w "$ZOO_LOG_DIR" ] ; then
mkdir -p "$ZOO_LOG_DIR"

蓝色处获取到了制定配置文件的正确路径但是从灰色出的ZOO_LOG_DIR确是默认的/opt/beh/logs,而并不是配置文件里dataLogDir指定的配置文件路径.

可以这样解决:

if [ -z "$ZOOPiIDFILE" ]; then
    ZOO_DATADIR="$(grep "^[[:space:]]*dataDir" "$ZOOCFG" | sed -e 's/.*=//')"
    ZOO_LOG_DIR=$ZOO_DATADIR"/logs"

    if [ ! -d "$ZOO_DATADIR" ]; then
        mkdir -p "$ZOO_DATADIR"
    fi
    ZOOPIDFILE="$ZOO_DATADIR/zookeeper_server.pid"
else
    # ensure it Iexists, otw stop will fail
    mkdir -p "$(dirname "$ZOOPIDFILE")"
fi
if [ ! -w "$ZOO_LOG_DIR" ] ; then
mkdir -p "$ZOO_LOG_DIR"

紫色处根据ZOO_DATADIR的路径来相对设置LOG_DIR就行了,我的logs是在每个zookeeper实例data路径下所以这么设置.

比如:dataDir =/opt/zk1

     dataLogDir=/opt/zk1/logs


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值