ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 使用 etcdctl v2 `etcdctl` 是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟 `etcd` 服务打交道,而无需基于 `HTTP API` 方式。这在某些情况下将很方便,例如用户对服务进行测试或者手动修改数据库内容。我们也推荐在刚接触 `etcd` 时通过 `etcdctl` 命令来熟悉相关的操作,这些操作跟 `HTTP API` 实际上是对应的。 `etcd` 项目二进制发行包中已经包含了 `etcdctl` 工具,没有的话,可以从 [github.com/coreos/etcd/releases](https://github.com/coreos/etcd/releases) 下载。 `etcdctl` 支持如下的命令,大体上分为数据库操作和非数据库操作两类,后面将分别进行解释。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl </span><span class="pun">-</span><span class="pln">h</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">NAME</span><span class="pun">:</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> etcdctl </span><span class="pun">-</span><span class="pln"> A simple command line client </span><span class="kwd">for</span><span class="pln"> etcd</span><span class="pun">.</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">USAGE</span><span class="pun">:</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> etcdctl </span><span class="pun">[</span><span class="kwd">global</span><span class="pln"> options</span><span class="pun">]</span><span class="pln"> command </span><span class="pun">[</span><span class="pln">command options</span><span class="pun">]</span><span class="pln"> </span><span class="pun">[</span><span class="pln">arguments</span><span class="pun">...]</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">VERSION</span><span class="pun">:</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> </span><span class="lit">2.0</span><span class="pun">.</span><span class="lit">0</span><span class="pun">-</span><span class="pln">rc</span><span class="pun">.</span><span class="lit">1</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">COMMANDS</span><span class="pun">:</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> backup backup an etcd directory</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> mk make a </span><span class="kwd">new</span><span class="pln"> key </span><span class="kwd">with</span><span class="pln"> a given value</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> mkdir make a </span><span class="kwd">new</span><span class="pln"> directory</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> rm remove a key</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> rmdir removes the key </span><span class="kwd">if</span><span class="pln"> it </span><span class="kwd">is</span><span class="pln"> an empty directory </span><span class="kwd">or</span><span class="pln"> a key</span><span class="pun">-</span><span class="pln">value pair</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> </span><span class="kwd">get</span><span class="pln"> retrieve the value of a key</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> ls retrieve a directory</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> </span><span class="kwd">set</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> the value of a key</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> setdir create a </span><span class="kwd">new</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> existing directory</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> update update an existing key </span><span class="kwd">with</span><span class="pln"> a given value</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> updatedir update an existing directory</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> watch watch a key </span><span class="kwd">for</span><span class="pln"> changes</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> </span><span class="kwd">exec</span><span class="pun">-</span><span class="pln">watch watch a key </span><span class="kwd">for</span><span class="pln"> changes </span><span class="kwd">and</span><span class="pln"> </span><span class="kwd">exec</span><span class="pln"> an executable</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> member member add</span><span class="pun">,</span><span class="pln"> remove </span><span class="kwd">and</span><span class="pln"> list subcommands</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> help</span><span class="pun">,</span><span class="pln"> h </span><span class="typ">Shows</span><span class="pln"> a list of commands </span><span class="kwd">or</span><span class="pln"> help </span><span class="kwd">for</span><span class="pln"> one command</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">GLOBAL OPTIONS</span><span class="pun">:</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> </span><span class="pun">--</span><span class="pln">debug output cURL commands which can be used to reproduce the request</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln"> </span><span class="pun">--</span><span class="kwd">no</span><span class="pun">-</span><span class="pln">sync don</span><span class="str">'t synchronize cluster information before sending request</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="str"> --output, -o '</span><span class="pln">simple</span><span class="str">' output response in the given format (`simple` or `json`)</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="str"> --peers, -C a comma-delimited list of machine addresses in the cluster (default: "127.0.0.1:4001")</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="str"> --cert-file identify HTTPS client using this SSL certificate file</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="str"> --key-file identify HTTPS client using this SSL key file</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="str"> --ca-file verify certificates of HTTPS-enabled servers using this CA bundle</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="str"> --help, -h show help</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="str"> --version, -v print the version</span></code></li> </ol> ``` ### 数据库操作 数据库操作围绕对键值和目录的 CRUD (符合 REST 风格的一套操作:Create)完整生命周期的管理。 etcd 在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如 `testkey`,此时实际上放在根目录 `/` 下面,也可以为指定目录结构,如 `cluster1/node2/testkey`,则将创建相应的目录结构。 *注:CRUD 即 Create, Read, Update, Delete,是符合 REST 风格的一套 API 操作。* #### set 指定某个键的值。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">/</span><span class="pln">testdir</span><span class="pun">/</span><span class="pln">testkey </span><span class="str">"Hello world"</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Hello</span><span class="pln"> world</span></code></li> </ol> ``` 支持的选项包括: ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">ttl </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">该键值的超时时间(单位为秒),不配置(默认为</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)则永不超时</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">swap</span><span class="pun">-</span><span class="pln">with</span><span class="pun">-</span><span class="pln">value value </span><span class="pun">若该键现在的值是</span><span class="pln"> value</span><span class="pun">,则进行设置操作</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">swap</span><span class="pun">-</span><span class="pln">with</span><span class="pun">-</span><span class="pln">index </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">若该键现在的索引值是指定索引,则进行设置操作</span></code></li> </ol> ``` #### get 获取指定键的值。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl </span><span class="kwd">set</span><span class="pln"> testkey hello</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">hello</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl update testkey world</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">world</span></code></li> </ol> ``` 当键不存在时,则会报错。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl get testkey2</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Error</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Key</span><span class="pln"> not found </span><span class="pun">(/</span><span class="pln">testkey2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span></code></li> </ol> ``` 支持的选项为 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">sort </span><span class="pun">对结果进行排序</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">consistent </span><span class="pun">将请求发给主节点,保证获取内容的一致性</span></code></li> </ol> ``` #### update 当键存在时,更新值内容。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl </span><span class="kwd">set</span><span class="pln"> testkey hello</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">hello</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl update testkey world</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">world</span></code></li> </ol> ``` 当键不存在时,则会报错。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl update testkey2 world</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Error</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Key</span><span class="pln"> not found </span><span class="pun">(/</span><span class="pln">testkey2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span></code></li> </ol> ``` 支持的选项为 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">ttl </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">超时时间(单位为秒),不配置(默认为</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)则永不超时</span></code></li></ol> ``` #### rm 删除某个键值。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl rm testkey</span></code></li></ol> ``` 当键不存在时,则会报错。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl rm testkey2</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Error</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Key</span><span class="pln"> not found </span><span class="pun">(/</span><span class="pln">testkey2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="lit">8</span><span class="pun">]</span></code></li> </ol> ``` 支持的选项为 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">dir </span><span class="pun">如果键是个空目录或者键值对则删除</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">recursive </span><span class="pun">删除目录和所有子键</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">with</span><span class="pun">-</span><span class="pln">value </span><span class="pun">检查现有的值是否匹配</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">with</span><span class="pun">-</span><span class="pln">index </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">检查现有的</span><span class="pln"> index </span><span class="pun">是否匹配</span></code></li> </ol> ``` #### mk 如果给定的键不存在,则创建一个新的键值。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl mk </span><span class="pun">/</span><span class="pln">testdir</span><span class="pun">/</span><span class="pln">testkey </span><span class="str">"Hello world"</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Hello</span><span class="pln"> world</span></code></li> </ol> ``` 当键存在的时候,执行该命令会报错,例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl </span><span class="kwd">set</span><span class="pln"> testkey </span><span class="str">"Hello world"</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Hello</span><span class="pln"> world</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ </span><span class="pun">./</span><span class="pln">etcdctl mk testkey </span><span class="str">"Hello world"</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Error</span><span class="pun">:</span><span class="pln"> </span><span class="lit">105</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Key</span><span class="pln"> already exists </span><span class="pun">(/</span><span class="pln">testkey</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span></code></li> </ol> ``` 支持的选项为 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">ttl </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">超时时间(单位为秒),不配置(默认为</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)则永不超时</span></code></li></ol> ``` #### mkdir 如果给定的键目录不存在,则创建一个新的键目录。例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl mkdir testdir</span></code></li></ol> ``` 当键目录存在的时候,执行该命令会报错,例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl mkdir testdir</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl mkdir testdir</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Error</span><span class="pun">:</span><span class="pln"> </span><span class="lit">105</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Key</span><span class="pln"> already exists </span><span class="pun">(/</span><span class="pln">testdir</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="lit">7</span><span class="pun">]</span></code></li> </ol> ``` 支持的选项为 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">ttl </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">超时时间(单位为秒),不配置(默认为</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)则永不超时</span></code></li></ol> ``` #### setdir 创建一个键目录,无论存在与否。 支持的选项为 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">ttl </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">超时时间(单位为秒),不配置(默认为</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)则永不超时</span></code></li></ol> ``` #### updatedir 更新一个已经存在的目录。 支持的选项为 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">ttl </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">超时时间(单位为秒),不配置(默认为</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)则永不超时</span></code></li></ol> ``` #### rmdir 删除一个空目录,或者键值对。 若目录不空,会报错 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">/</span><span class="pln">dir</span><span class="pun">/</span><span class="pln">testkey hi</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">hi</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl rmdir </span><span class="pun">/</span><span class="pln">dir</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Error</span><span class="pun">:</span><span class="pln"> </span><span class="lit">108</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Directory</span><span class="pln"> not empty </span><span class="pun">(/</span><span class="pln">dir</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="lit">13</span><span class="pun">]</span></code></li> </ol> ``` #### ls 列出目录(默认为根目录)下的键或者子目录,默认不显示子目录中内容。 例如 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ </span><span class="pun">./</span><span class="pln">etcdctl </span><span class="kwd">set</span><span class="pln"> testkey </span><span class="str">'hi'</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">hi</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ </span><span class="pun">./</span><span class="pln">etcdctl </span><span class="kwd">set</span><span class="pln"> dir</span><span class="pun">/</span><span class="pln">test </span><span class="str">'hello'</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">hello</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ </span><span class="pun">./</span><span class="pln">etcdctl ls</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">/</span><span class="pln">testkey</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">/</span><span class="pln">dir</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ </span><span class="pun">./</span><span class="pln">etcdctl ls dir</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">/</span><span class="pln">dir</span><span class="pun">/</span><span class="pln">test</span></code></li> </ol> ``` 支持的选项包括 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">sort </span><span class="pun">将输出结果排序</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">recursive </span><span class="pun">如果目录下有子目录,则递归输出其中的内容</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">-</span><span class="pln">p </span><span class="pun">对于输出为目录,在最后添加</span><span class="pln"> </span><span class="str">`/`</span><span class="pln"> </span><span class="pun">进行区分</span></code></li> </ol> ``` ### 非数据库操作 #### backup 备份 etcd 的数据。 支持的选项包括 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">data</span><span class="pun">-</span><span class="pln">dir etcd </span><span class="pun">的数据目录</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">backup</span><span class="pun">-</span><span class="pln">dir </span><span class="pun">备份到指定路径</span></code></li> </ol> ``` #### watch 监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出。 例如,用户更新 testkey 键值为 Hello world。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl watch testkey</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Hello</span><span class="pln"> world</span></code></li> </ol> ``` 支持的选项包括 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">forever </span><span class="pun">一直监测,直到用户按</span><span class="pln"> </span><span class="str">`CTRL+C`</span><span class="pln"> </span><span class="pun">退出</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">after</span><span class="pun">-</span><span class="pln">index </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">在指定</span><span class="pln"> index </span><span class="pun">之前一直监测</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">recursive </span><span class="pun">返回所有的键值和子键值</span></code></li> </ol> ``` #### exec-watch 监测一个键值的变化,一旦键值发生更新,就执行给定命令。 例如,用户更新 testkey 键值。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl exec</span><span class="pun">-</span><span class="pln">watch testkey </span><span class="pun">--</span><span class="pln"> sh </span><span class="pun">-</span><span class="pln">c </span><span class="str">'ls'</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">default</span><span class="pun">.</span><span class="pln">etcd</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="typ">Documentation</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">etcd</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">etcdctl</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">etcd</span><span class="pun">-</span><span class="pln">migrate</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">README</span><span class="pun">-</span><span class="pln">etcdctl</span><span class="pun">.</span><span class="pln">md</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">README</span><span class="pun">.</span><span class="pln">md</span></code></li> </ol> ``` 支持的选项包括 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">after</span><span class="pun">-</span><span class="pln">index </span><span class="str">'0'</span><span class="pln"> </span><span class="pun">在指定</span><span class="pln"> index </span><span class="pun">之前一直监测</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pun">--</span><span class="pln">recursive </span><span class="pun">返回所有的键值和子键值</span></code></li> </ol> ``` #### member 通过 list、add、remove 命令列出、添加、删除 etcd 实例到 etcd 集群中。 例如本地启动一个 etcd 服务实例后,可以用如下命令进行查看。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ etcdctl member list</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">ce2a822cea30bfca</span><span class="pun">:</span><span class="pln"> name</span><span class="pun">=</span><span class="pln">default peerURLs</span><span class="pun">=</span><span class="pln">http</span><span class="pun">://</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">2380</span><span class="pun">,</span><span class="pln">http</span><span class="pun">://</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">7001</span><span class="pln"> clientURLs</span><span class="pun">=</span><span class="pln">http</span><span class="pun">://</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">2379</span><span class="pun">,</span><span class="pln">http</span><span class="pun">://</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">4001</span></code></li> </ol> ``` ### 命令选项 - `--debug` 输出 cURL 命令,显示执行命令的时候发起的请求 - `--no-sync` 发出请求之前不同步集群信息 - `--output, -o 'simple'` 输出内容的格式 (`simple` 为原始信息,`json` 为进行json格式解码,易读性好一些) - `--peers, -C` 指定集群中的同伴信息,用逗号隔开 (默认为: “127.0.0.1:4001”) - `--cert-file` HTTPS 下客户端使用的 SSL 证书文件 - `--key-file` HTTPS 下客户端使用的 SSL 密钥文件 - `--ca-file` 服务端使用 HTTPS 时,使用 CA 文件进行验证 - `--help, -h` 显示帮助命令信息 - `--version, -v` 打印版本信息