Zookeeper笔记之命令行操作
$ZOOKEEPER_HOME/bin下的zkCli.sh进入命令行界面,使用help可查看支持的所有命令:
一、节点相关操作
create [-s] [-e] path data acl
create用于创建新的节点:
create [-s] [-e] path data acl
使用create创建一个节点:
创建节点时的一些选项详解:
-s和-e都是可选的,用来指定节点的类型,节点的类型有四种:
临时节点 临时顺序节点 永久节点 永久顺序节点
-s用于指定创建的节点是否是顺序的,顺序节点就是每次创建子节点的时候都会在已经指定的路径后追加一个从父节点得到的自增id,父节点维护的自增id每次创建子节点时都会加1
-e用于指定节点是否是临时节点还是持久节点,-e表示ephemeral,表示创建的是临时节点,默认创建的是永久节点。
临时节点只能是叶子节点,即不能在临时节点下再创建节点:
path:指定要创建的节点的路径,比如/foo/bar
data:要在此节点上存储的数据
acl:访问控制相关
get path [watch]
get获取指定节点的数据和属性信息。
get path [watch]
查看根节点的属性信息:
第一行为节点的数据信息,这里因为没有数据所以第一行为空。
cZxid:节点创建时的Zxid
ctime:节点的创建时间
mZxid:节点最近一次更新时的Zxid
mtime:节点最近一次更新的时间
pZxid:添加删除子节点
cversion:子节点数据更新次数
dataVersion:此节点的数据更新次数
aclVersion:节点的acl授权信息更新次数
ephemeralOwner:仅在节点为临时节点时有效,否则为0。如果此节点是临时节点,值为创建此节点的会话的session id
dataLength:此节点存放的数据的长度
numChildren:有多少子节点
stat path [watch]
get和stat的区别是get比stat多返回了节点数据:
ls path [watch]
列出指定节点下的所有节点
ls path [watch]
返回结果的数据类型是数组。
ls2 path [watch]
与ls不同的是,ls2除了能够查看此节点下包含的所有节点,还能够查看此节点的相关元信息。
set path data [version]
set用于更新节点数据
set path data [version]
path:要更新的节点路径,比如/foo/bar
data:要为节点设置的新数据
version:指定操作的是节点的哪一个版本,不指定的话默认是更新最新版本,每次操作版本增加1
delete path [version]
delete用于删除节点
delete path [version]
path:要删除的节点的路径,比如/foo/bar
version:要删除的节点版本
delete命令的version作用和set中的version一致,也是用于指定是针对节点的哪个版本进行操作。
需要注意的是被删除的节点需要是叶子节点,其下不能再有其它节点:
rmr path
用来删除节点,与delete的区别是delete只能用来删除叶子节点,如果节点下有子节点的话则不能删除,则rmr可以删除非叶子节点,即节点下有子节点时仍可以删除节点,zk中的delete类似于Linux下的rmdir,只能用来删除空目录,而rmr则类似于rm -rf,不管目录下面有什么都递归删除:
使用delete删除/foo时报错删除失败,使用rmr删除/foo时没有消息打印,Unix哲学没有消息就是好消息,说明删除成功。
printwatches on|off
sync path
二、ACL相关
setAcl path acl
getAcl path
addauth scheme auth
三、配额相关
setquota -n|-b val path
-n 指定path能够存储的节点数,包括这个节点本身
-b 指定节点下能够存储的数据数据的大小
listquota path
查看某个节点已经设置的配额:
delquota [-n|-b] path
删除某个路径上对应类型的配额设置,需要注意的是删除节点时并不会自动删除绑定在特定路径上的quota,需要手动删除:
关于配额相关更详细的知识,请查看:Zookeeper笔记之quota
四、连接管理相关
connect host:port
用于连接到zk服务器
close
用于关闭当前已经打开的连接
五、命令历史相关
history
查看命令历史:
第一列是命令的编号,第二列是实际执行的命令,与Linux下的history的默认样式差不多,这个命令编号在执行redo时会使用到。
redo cmdno
从history的图看到每个命令都有一个命令编号,当前命令的编号在prompt中显示:
每执行完一条命令此命令编号就会加1.
使用命令编号可以重新执行命令,根据上面history的记录来看第33条命令是get /foo,使用redo来重新执行一下试试:
六、其它
quit
退出命令行界面
help
查看支持的所有命令
.