在 Linux 上安装了 etcd 后,可以通过以下几种方式查看它的状态:


方法一:使用 etcdctl 工具

etcdctl 是 etcd 的命令行工具,可以用于查看集群状态、成员信息等。

1. 查看 etcd 版本

etcdctl version

2. 设置环境变量(如果你是使用默认配置)

export ETCDCTL_API=3

3. 查看健康状态

etcdctl endpoint health

如果 etcd 正常运行,会返回类似:

127.0.0.1:2379 is healthy: successfully committed proposal: took = 1.233ms

4. 查看成员列表

etcdctl member list

5. 查看集群状态

etcdctl endpoint status --write-out=table

方法二:使用 systemd 查看服务状态

如果你是使用 systemd 安装/启动的 etcd,可以使用:

systemctl status etcd

也可以用:

journalctl -u etcd -f

实时查看日志输出。


方法三:查看进程和监听端口

查看是否有 etcd 进程运行:

ps aux | grep etcd

查看 etcd 是否监听了默认端口 2379:

ss -tunlp | grep 2379

方法四:通过 HTTP API(如果你开放了接口)

例如:

curl http://localhost:2379/health

返回:

{"health":"true"}

说明服务正常。

这个报错:

json: Unmarshal(non-pointer model.Submit)

出现在语句:

err := c.ShouldBind(codedata)

说明在调用 ShouldBind 时传入了一个 非指针类型 的参数,而它需要一个指针类型来把 JSON 数据反序列化进去。


问题详解:

在 Go 的 encoding/json 包(Gin 的绑定底层也是用它)中,json.Unmarshal 必须接收一个指针,否则无法修改原变量的值。

例如:

type Submit struct {
    Code string `json:"code"`
}

错误写法(非指针):

var codedata model.Submit // 这是值类型
err := c.ShouldBind(codedata) // 这里会报错:json: Unmarshal(non-pointer model.Submit)

正确写法(指针):

var codedata model.Submit
err := c.ShouldBind(&codedata) // 正确,传指针

正确写法总结:

var codedata model.Submit
err := c.ShouldBind(&codedata)
if err != nil {
    c.JSON(400, gin.H{"error": err.Error()})
    return
}

我感觉我已经开始摆了。
比如说现在,我暂时没有心力去学习一些新的东西。
这种状况已经持续很久了。
可能对于我来说,又到了一个下降的情况。
可能未来的一段时间我都不会有什么产出。
也不会获得什么成就。
我打算让自己的大脑静一静。
今天确实没有动力。
希望明天会更好。
希望生活对我好点。

很久不进行写作的我,渐渐失去了写作的能力。
我会回忆起高一的时候,我们语文老师让我们写周记。
我的分享欲或许就是在那个时候培养起来的。后来到了博客。
总是会在有节日的时候送上祝福,好像真的有人在关注一样。
悲观的情感总是促使写作的原因。
或许也是促使分享的原因。
我认为我在上了大学之后生活逐渐的变好了。
或许是因为有了更需要关注的事情,让我渐渐的不再有分享的心。
又或者是因为和周围人能够交流的机会变得很少了。
就算是上课,大家也基本上不会有互动。
少数的时候不得已必须要交流的时候,也会交流一二,等下了课之后就又散了。
因为这种不固定的地缘关系。
让被迫进行的交流变得少了,我可以把更多的精力放在其他的地方。
不管是什么地方,总归不再是人际交往方面。
事实上这也是我高中时候就一直在期待的。