zookeeper.outの出力先

Apache ZooKeeperにおいて表題の通り。たまに忘れてしまうのでメモ。

■ 環境

  • ZooKeeper 3.4.6

■ zookeeper.out

`zkServer.sh start`を実行したカレントディレクトリに作成される。owner/groupはコマンドを実行したユーザのものとなる。

なぜコマンドを実行したカレントディレクトリになるかは、`zkEnv.sh`を見るとわかる。下記のようなコードがある。

$ cat zkEnv.sh
  :
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="."
fi
  :

これを元に、`zkServer.sh`の中で下記のように設定される。

$ cat zkServer.sh
  :
if [ ! -w "$ZOO_LOG_DIR" ] ; then
mkdir -p "$ZOO_LOG_DIR"
fi

_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"

case $1 in
start)
  :
    nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
  :

よってコマンドを実行したカレントディレクトリにデフォルトでは作成されてしまう。

ここまで見ればわかるように、環境変数”ZOO_LOG_DIR“を設定しておけば、そのディレクトリに`zookeeper.out`は作成されるようになる。`.bashrc`に書いてしまうなり、コマンド実行時に下記のようにすれば良いであろう。

$ ZOO_LOG_DIR=/path/to/dir zkServer.sh start

ちなみにHomebrewでインストールしたMacにおいては、下記のようになっている。

$ cat /usr/local/Cellar/zookeeper/3.4.6_1/bin/zkServer
#!/usr/bin/env bash
. "/usr/local/etc/zookeeper/defaults"
cd "/usr/local/Cellar/zookeeper/3.4.6_1/libexec/bin"
./zkServer.sh "$@"
$

`cd`でディレクトリを移動した後に`zkServer.sh`が実行されているので、この`cd`したディレクトリに作成されているはずだ。

以上。

■ 関連

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください