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

来源:互联网 发布:python高手之路 第3版 编辑:程序博客网 时间:2024/06/05 15:42

伪分布式的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


0 0
原创粉丝点击