zookeeper 客户端命令行操作

1. 基本语法

命令基本语法 功能描述
help 显示所有操作命令
ls path [watch] 使用 ls 命令来查看当前znode中所包含的内容
ls2 path [watch] 查看当前节点数据并能看到更新次数等数据
create 普通创建-s 含有序列-e 临时(重启或者超时消失)
get path [watch] 获得节点的值
set 设置节点的具体值
stat 查看节点状态
delete 删除节点
rmr 递归删除节点

2. 操作

2.1 启动

root@leco:/usr/local/zookeeper/bin# ./zkCli.sh

2.2 帮助

[zk: localhost:2181(CONNECTED) 41] help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port

2.3 查看当前znode中所包含的内容

[zk: localhost:2181(CONNECTED) 42] ls /
[cmz, zookeeper]

2.4 查看当前节点详细数据

[zk: localhost:2181(CONNECTED) 43] ls2 /
[cmz, zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x47
cversion = 6
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

2.5 分别创建2个普通节点

[zk: localhost:2181(CONNECTED) 44] create /leco "icpc"     
Created /leco
[zk: localhost:2181(CONNECTED) 47] create /leco/cmz 'caimengzhi'
Created /leco/cmz
[zk: localhost:2181(CONNECTED) 48] ls /
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 49] ls /leco/
Command failed: java.lang.IllegalArgumentException: Path must not end with / character
[zk: localhost:2181(CONNECTED) 50] ls /leco 
[cmz]
[zk: localhost:2181(CONNECTED) 51] ls /leco/cmz
[]

2.6 获得节点的值

[zk: localhost:2181(CONNECTED) 57] ls /
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 58] ls /leco 
[cmz]
[zk: localhost:2181(CONNECTED) 59] ls /leco/cmz
[]
[zk: localhost:2181(CONNECTED) 60] get /leco
"icpc"
cZxid = 0x48
ctime = Wed Aug 07 13:34:14 CST 2019
mZxid = 0x48
mtime = Wed Aug 07 13:34:14 CST 2019
pZxid = 0x4a
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 1
[zk: localhost:2181(CONNECTED) 61] get /leco/cmz
'caimengzhi'
cZxid = 0x4a
ctime = Wed Aug 07 13:35:35 CST 2019
mZxid = 0x4a
mtime = Wed Aug 07 13:35:35 CST 2019
pZxid = 0x4a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0

2.7 创建短暂节点

[zk: localhost:2181(CONNECTED) 64] ls /       
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 65] create -e /leco/tmp 'tmp for test'
Created /leco/tmp
  • 在当前客户端是能查看到的
[zk: localhost:2181(CONNECTED) 67] ls /leco
[cmz, tmp]  
  • 退出当前客户端然后再重启客户端
[zk: localhost:2181(CONNECTED) 69] quit
Quitting...
2019-08-07 13:39:30,041 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x16c6a1676db0000 closed
2019-08-07 13:39:30,041 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@509] - EventThread shut down
root@leco:/usr/local/zookeeper/bin# ./zkCli.sh
Connecting to localhost:2181
2019-08-07 13:39:33,131 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.5-139209
0, built on 09/30/2012 17:52 GMT2019-08-07 13:39:33,137 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=localhost
2019-08-07 13:39:33,137 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_40
2019-08-07 13:39:33,137 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2019-08-07 13:39:33,137 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/jdk1.8.
0_40/jre2019-08-07 13:39:33,137 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/usr/local/zoo
keeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.2.2.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.15.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.5.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf:.:/usr/lib/jvm/jdk1.8.0_40/lib:/usr/lib/jvm/jdk1.8.0_40/jre/lib2019-08-07 13:39:33,138 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/pa
ckages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib2019-08-07 13:39:33,138 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2019-08-07 13:39:33,138 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2019-08-07 13:39:33,138 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2019-08-07 13:39:33,138 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2019-08-07 13:39:33,139 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=4.15.0-47-generic
2019-08-07 13:39:33,139 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2019-08-07 13:39:33,139 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2019-08-07 13:39:33,139 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper-
3.4.5/bin2019-08-07 13:39:33,141 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=localho
st:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5c29bfdWelcome to ZooKeeper!
2019-08-07 13:39:33,177 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@966] - Opening sock
et connection to server localhost/192.168.5.110:2181. Will not attempt to authenticate using SASL (unknown error)JLine support is enabled
2019-08-07 13:39:33,266 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@849] - Socket conne
ction established to localhost/192.168.5.110:2181, initiating session2019-08-07 13:39:33,276 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1207] - Session est
ablishment complete on server localhost/192.168.5.110:2181, sessionid = 0x16c6a1676db0008, negotiated timeout = 30000
WATCHER::

WatchedEvent state:SyncConnected type:None path:null
  • 再次查看根目录下短暂节点已经删除
[zk: localhost:2181(CONNECTED) 0] ls /
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 1] ls /leco
[cmz]

2.8 创建带序号的节点

  • 先创建一个普通的根节点
[zk: localhost:2181(CONNECTED) 2] ls /
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 3] create /leco/item '带节点'
Created /leco/item
  • 创建带序号的节点
[zk: localhost:2181(CONNECTED) 9] create -s /leco/item/name1 '张三'    
Created /leco/item/name10000000000
[zk: localhost:2181(CONNECTED) 9] create -s /leco/item/name2 '李四'    
Created /leco/item/name20000000001
[zk: localhost:2181(CONNECTED) 9] create -s /leco/item/name3 '王五'    
Created /leco/item/name30000000002
[zk: localhost:2181(CONNECTED) 17] ls /leco/item 
[name30000000002, name20000000001, name10000000000]
[zk: localhost:2181(CONNECTED) 20] get /leco/item/name20000000001
'李四'
cZxid = 0x50
ctime = Wed Aug 07 13:44:52 CST 2019
mZxid = 0x50
mtime = Wed Aug 07 13:44:52 CST 2019
pZxid = 0x50
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0


删除节点
[zk: localhost:2181(CONNECTED) 18] rmr /leco/item/name10000000000
[zk: localhost:2181(CONNECTED) 19] ls /leco/item                 
[name30000000002, name20000000001]
[zk: localhost:2181(CONNECTED) 4] rmr /leco/item/name30000000002
[zk: localhost:2181(CONNECTED) 6] ls /leco/item 
[name20000000001]

[zk: localhost:2181(CONNECTED) 7] create -s /leco/item/name4 'cmz'   
Created /leco/item/name40000000003
[zk: localhost:2181(CONNECTED) 8] ls /leco/item                      
[name40000000003, name20000000001] 

如果原来没有序号节点,序号从0开始依次递增。如果原节点下已有2个节点,则再排序时从2开始,以此类推。

2.9 修改节点的值

[zk: localhost:2181(CONNECTED) 12] get /leco/item/name20000000001
'李四'
cZxid = 0x50
ctime = Wed Aug 07 13:44:52 CST 2019
mZxid = 0x50
mtime = Wed Aug 07 13:44:52 CST 2019
pZxid = 0x50
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0

[zk: localhost:2181(CONNECTED) 13] set /leco/item/name20000000001 'lisi'
cZxid = 0x50
ctime = Wed Aug 07 13:44:52 CST 2019
mZxid = 0x57
mtime = Wed Aug 07 13:50:32 CST 2019
pZxid = 0x50
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: localhost:2181(CONNECTED) 14] get /leco/item/name20000000001       
'lisi'
cZxid = 0x50
ctime = Wed Aug 07 13:44:52 CST 2019
mZxid = 0x57
mtime = Wed Aug 07 13:50:32 CST 2019
pZxid = 0x50
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

2.10 节点的值变化监听

[zk: localhost:2181(CONNECTED) 3] ls /
[cmz, zookeeper]
[zk: localhost:2181(CONNECTED) 5] create /leco 'root'
Created /leco
[zk: localhost:2181(CONNECTED) 6] create /leco/tmp1 'tmp1'
Created /leco/tmp1
[zk: localhost:2181(CONNECTED) 7] create /leco/tmp2 'tmp2'
Created /leco/tmp2
[zk: localhost:2181(CONNECTED) 8] ls /
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 10] ls /leco 
[tmp1, tmp2]
  • 在master主机上注册监听/leco节点数据变化
[zk: localhost:2181(CONNECTED) 11] ls /
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 13] get /leco watch  
'root'
cZxid = 0x100000003
ctime = Wed Aug 07 13:52:21 CST 2019
mZxid = 0x100000003
mtime = Wed Aug 07 13:52:21 CST 2019
pZxid = 0x100000005
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 2

查看值,待会在别的机器上修改
[zk: localhost:2181(CONNECTED) 8] set /leco 'LECO'     
cZxid = 0x100000003
ctime = Wed Aug 07 01:52:21 EDT 2019
mZxid = 0x100000008
mtime = Wed Aug 07 01:57:38 EDT 2019
pZxid = 0x100000005
cversion = 2
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 2
  • 在slave1主机上修改/leco节点的数据
[zk: localhost:2181(CONNECTED) 7] get /leco 
'root'
cZxid = 0x100000003
ctime = Wed Aug 07 01:52:21 EDT 2019
mZxid = 0x100000003
mtime = Wed Aug 07 01:52:21 EDT 2019
pZxid = 0x100000005
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 2

修改节点的值
[zk: localhost:2181(CONNECTED) 8] set /leco 'LECO'     
cZxid = 0x100000003
ctime = Wed Aug 07 01:52:21 EDT 2019
mZxid = 0x100000008
mtime = Wed Aug 07 01:57:38 EDT 2019
pZxid = 0x100000005
cversion = 2
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
  • 观察master主机[开启监听]收到数据变化的监听
WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/leco

2.11 节点的子节点变化监听(路径变化)

  • 在master主机上注册监听/leco节点的子节点变化
[zk: localhost:2181(CONNECTED) 16] ls /
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 17] ls /leco watch
[tmp1, tmp2]
  • 在slave1主机/leco节点上创建子节点
[zk: localhost:2181(CONNECTED) 11] create /leco/tmp3 'tmp3'
Created /leco/tmp3
[zk: localhost:2181(CONNECTED) 12] ls /leco
[tmp3, tmp1, tmp2]
  • 观察master主机收到子节点变化的监听
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/leco

2.12 删除节点

  • 非递归删除
[zk: localhost:2181(CONNECTED) 18] ls /leco
[tmp3, tmp1, tmp2]
[zk: localhost:2181(CONNECTED) 19] delete /leco
Node not empty: /leco
[zk: localhost:2181(CONNECTED) 20] delete /leco/tmp1
[zk: localhost:2181(CONNECTED) 21] ls /leco         
[tmp3, tmp2]
[zk: localhost:2181(CONNECTED) 22] rmr /leco/tmp2
[zk: localhost:2181(CONNECTED) 23] ls /leco      
[tmp3]
  • 递归删除
[zk: localhost:2181(CONNECTED) 26] ls /    
[cmz, zookeeper, leco]
[zk: localhost:2181(CONNECTED) 27] ls /leco
[tmp3]
[zk: localhost:2181(CONNECTED) 28] rmr /leco

rmr 类似Linux 的rm -r

2.13 查看节点状态

[zk: localhost:2181(CONNECTED) 31] ls /
[cmz, zookeeper]
[zk: localhost:2181(CONNECTED) 32] stat /cmz
cZxid = 0x100000002
ctime = Wed Aug 07 10:12:39 CST 2019
mZxid = 0x100000002
mtime = Wed Aug 07 10:12:39 CST 2019
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
解释
1)czxid-创建节点的事务zxid
每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。
事务ID是ZooKeeper中所有修改总的次序。每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生。
2)ctime - znode被创建的毫秒数(从1970年开始)
3)mzxid - znode最后更新的事务zxid
4)mtime - znode最后修改的毫秒数(从1970年开始)
5)pZxid-znode最后更新的子节点zxid
6)cversion - znode子节点变化号,znode子节点修改次数
7)dataversion - znode数据变化号
8)aclVersion - znode访问控制列表的变化号
9)ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。
10)dataLength- znode的数据长度
11)numChildren - znode子节点数

2.14 查看历史操作

[zk: localhost:2181(CONNECTED) 35] history ls
25 - ls /leco
26 - ls /
27 - ls /leco
28 - rmr /leco
29 - ls
30 - ls /
31 - ls /
32 - stat /cmz
33 - history
34 - history ls
35 - history ls
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port

2.15 配额

  • 设置配额

  节点可以存储数据,也可以创建子节点,但是如果不做控制,节点数据可以无限大,子节点数量也可以创建无数个,所以在有些场景下需要对节点的数据和子节点的数量需要做一些限制,zk为我们提供了setauota命令实现对子节点的限制功能。但是,zk并不是真正在的物理上对节点做了限制,而是如果超过了节点限制,会在zk的日志文件中记录配额超限的警告信息。

setquota -n|-b val path
-n:限制子节点的数量
-b:限制节点的数据长度
val:根据-n和-b参数不同,val值的意义也不一样。
    如果是-n参数,val表示限制子节点的数量。
    如果是-b参数,val表示限制节点的数据长度
[zk: localhost:2181(CONNECTED) 10] create /cmz/tmp1 'tmp1'
Created /cmz/tmp1
[zk: localhost:2181(CONNECTED) 11] create /cmz/tmp2 'tmp2'
Created /cmz/tmp2
[zk: localhost:2181(CONNECTED) 12] create /cmz/tmp3 'tmp3'
Created /cmz/tmp3

  你可能会觉得奇怪,我明明限制了/node_01节点最多只能有2个节点,在创建第3个节点的时候并没有报错,也创建成功了,为什么限制没有起作用呢?在上面我也提到了,zk并没有在物理上限制节点的数量和数据的长度,当节点超过了限制,zk只会在后台记录节点限制的日志信息。下面我们看下zk日志文件中输出的节点配额限制警告信息

[root@master bin]# ls
README.txt  zkCleanup.sh  zkCli.cmd  zkCli.sh  zkEnv.cmd  zkEnv.sh  zkServer.cmd  zkServer.sh  zookeeper.out
[root@master bin]# grep Quota zookeeper.out 
2019-08-07 14:23:48,072 [myid:1] - WARN  [CommitProcessor:1:DataTree@388] - Quota exceeded: /cmz count=3 limit=2
2019-08-07 14:23:52,233 [myid:1] - WARN  [CommitProcessor:1:DataTree@388] - Quota exceeded: /cmz count=4 limit=2

  日志中输出的警告信息count=2,表示/cmz节点当前有3个子节点。limit=2,表示/cmz节点最多只能有2个节点。

  • 显示配额

解释

Output quota:表示节点的配额信息,限制该节点最多有2个子节点,节点数据为-1,表示不限制
Output stat:表示当前节点的状态信息,该节点有4个子节点,节点数据长度为30
  • 删除节点配额
delquota [-n|-b] path
  • -n:删除子节点数量配额限制
  • -b:删除节点数据长度配额限制
[zk: localhost:2181(CONNECTED) 16] delquota -n /cmz    
[zk: localhost:2181(CONNECTED) 17] listquota /cmz
absolute path is /zookeeper/quota/cmz/zookeeper_limits
Output quota for /cmz count=-1,bytes=-1
Output stat for /cmz count=4,bytes=30

2.16 再次执行某命令

[zk: localhost:2181(CONNECTED) 4] history
0 - history
1 - ls /
2 - ls /cmz/
3 - ls /cmz
4 - history
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port
[zk: localhost:2181(CONNECTED) 5] redo 3
[]
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port

其中3为命令ID,需与history配合使用。

2.17 同步

sync path 

  path: 节点路径,在对某个znode进行读操作时,应该先执行sync方法,使得读操作的连接所连的zk实例能与leader进行同步,从而保证能读到最新的数据。

[zk: localhost:2181(CONNECTED) 18] sync /cmz

注意:sync调用是异步的,无需等待调用的返回,zk服务器会保证所有后续的操作会在sync操作完成之后才执行,哪怕这些操作是在执行sync之前被提交的。

2.18 打开或关闭监听日志

  在获取节点数据、子节点列表等操作时,都可以添加watch参数监听节点的变化,从而节点数据更改、子节点列表变更时收到通知,并输出到控制台。默认是打开,可以设置参数将其关闭。

printwatches on|off
- on:打开 - off:关闭

[zk: localhost:2181(CONNECTED) 19] printwatches off
[zk: localhost:2181(CONNECTED) 19] printwatches on

2.19 权限

2.19.1 查看权限

  • 查看权限
getAcl path
  • path:节点路径

  ACL是zk对节点权限控制的一种策略.

[zk: master(CONNECTED) 26] getAcl /cmz   
'world,'anyone
: cdrwa

创建节点时如果没有设置acl权限,默认为所有用户都可以对该节点进行读写操作。

2.19.2 设置权限

setAcl path acl
  • path:节点路径
  • acl:ACL权限模式

2.20 关闭与连接

  • close :关闭
  • connect 主机 :链接主机
[zk: localhost:2181(CONNECTED) 22] close
2019-08-07 14:38:08,797 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x16c69ca3b220001 closed
[zk: localhost:2181(CLOSED) 23] 2019-08-07 14:38:08,798 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@509] - Event
Thread shut down

[zk: localhost:2181(CLOSED) 23] ls / 
Not connected

[zk: localhost:2181(CLOSED) 24] connect master
2019-08-07 14:39:17,843 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=master sessionTime
out=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@6d86b085ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port
[zk: master(CONNECTING) 25] 2019-08-07 14:39:17,846 [myid:] - INFO  [main-SendThread(master:2181):ClientCnxn$SendThread@966] 
- Opening socket connection to server master/192.168.186.10:2181. Will not attempt to authenticate using SASL (unknown error)2019-08-07 14:39:17,847 [myid:] - INFO  [main-SendThread(master:2181):ClientCnxn$SendThread@849] - Socket connection establis
hed to master/192.168.186.10:2181, initiating session2019-08-07 14:39:17,852 [myid:] - INFO  [main-SendThread(master:2181):ClientCnxn$SendThread@1207] - Session establishment com
plete on server master/192.168.186.10:2181, sessionid = 0x16c69ca3b220002, negotiated timeout = 30000
WATCHER::

WatchedEvent state:SyncConnected type:None path:null

[zk: master(CONNECTED) 25] ls /
[cmz, zookeeper]