【问题标题】:Shell script to delete znodes(Zookeeper)删除znodes的Shell脚本(Zookeeper)
【发布时间】:2015-10-06 15:45:12
【问题描述】:

我正在尝试创建一个 shell 脚本来删除我的 znode。这是命令:

echo "ls /" | zookeeper-client
echo "rmr /collections" | zookeeper-client

我想删除很多这样的节点。每当我执行上述命令时,有时它会成功删除集合节点,有时它会抛出错误。我发现的原因是每当我们通过 shell 脚本运行“zookeeper-client”时,zookeeper shell 需要一些时间才能启动。 有什么办法可以删除这些节点?

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • shell 启动需要多长时间应该是无关紧要的——如果它在准备好从 stdin 读取之前从 stdin 读取,那是一个错误,应该向 zookeeper-client 维护者提交.
  • 也就是说——您能否准确说明您所指的 zookeeper-client 工具是什么,以便我尝试查找并参考其来源?
  • 如果这是基于cli_st(或cli_mt)... 简短形式:它们很糟糕,不要使用它们。任何在关闭之前不等待挂起的异步响应的东西,因为它没有更多的请求,不值得你花时间去破解。

标签: sh apache-zookeeper


【解决方案1】:

你可以用这个删除 zookeeper-client rmr

例如 zookeeper-client rmr /test

【讨论】:

    【解决方案2】:

    这里的骇客数量太可怕了——写完下面的内容后,我很难保持任何自尊。

    拜托,拜托使用不同的语言,而不是采用下面的可怕黑客集合。

    IFS=$'\n ' read -r -d '' -a names \
      < <(./cli_st 127.0.0.1:2181 < <(sleep 1; echo 'ls /'; sleep 1) 2>&1 | grep '^[[:space:]]')
    ./cli_st 127.0.0.1:2181 < <(sleep 1; printf 'rmr %s\n' "${names[@]}"; sleep 1; )
    

    cli_st,这里是 Zookeeper 代码库的 C 语言位中包含的命令行客户端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-23
      • 2014-06-27
      • 1970-01-01
      • 2019-02-03
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      相关资源
      最近更新 更多