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
檢視支援的所有命令
.