{{i18nTranslate('_layout.t11')}} {{i18nGetLang()==='zh' ? 'EN' : '中文'}}

# 常用命令

在执行命令的时候请使用完整的路径或者使用相对路径，如：

    /$EdgeDNS安装目录/bin/edge-dns -v

或者：

    cd /$EdgeDNS安装目录
    bin/edge-dns -v

如果使用的是GoEdge远程安装的节点，安装目录默认在 `/$ssh用户名/edge-dns/edge-dns`，请将其中的`$ssh用户名`换成你实际使用的用户名，比如`root`。

从GoEdge v1.2.7以后，节点初次启动后（`edge-dns start`）后，会在系统里自动生成软链接：创建文件 `/usr/bin/edge-dns`，以后可以执行使用`edge-dns xxx`命令执行。

> 注意：如果提示命令找不到 `Unknown command: edge-dns`，说明你没有指定命令所在目录，请在命令执行时使用完整的路径或者使用相对路径，参考本文开始说明。

> 注意：如果是使用非 root 用户执行命令，你需要使用 `sudo` 执行大部分命令，比如 `sudo bin/edge-dns status` 。

## 打印帮助信息

    edge-dns -h

## 打印版本信息

    edge-dns -v

## 启动服务

启动服务并在后台运行：

    edge-dns start

如果要在前端启动服务，并阻塞当前进程，可以使用：

    edge-dns

## 测试服务

可以用下面命令检查服务是否可以正常工作：

    edge-dns test

## 停止服务

    edge-dns stop

对于集群中开启了systemd服务的（默认是开启状态），可以使用以下命令停止节点：

    systemctl stop edge-dns

## 重启服务

    edge-dns restart

## 查看服务状态

    edge-dns status

## 安装systemd系统服务

安装系统服务后，系统重新启动的时候，会自动启动 `edge-dns` 进程。使用此命令的前提是系统已经安装并启用了 `systemd` 服务。可以通过 `systemctl --system` 命令来确认 `systemd` 服务是否在正常运行。

    edge-dns service

## 使用守护进程启动服务

自动安装的edge-dns会自动启动一个守护进程，手动启动的时候也可以通过 `daemon` 参数来启动守护进程。当守护进程在运行时，`edge-dns` 进程在遇到故障意外退出时，守护进程可以立即启动一个新的 `edge-dns` 进程，保障服务不会长时间宕机。

    edge-dns daemon

## 调试

### 开启pprof

可以使用以下命令开启pprof模式，用来监控节点运行性能信息：

    edge-dns pprof

默认pprof地址为`127.0.0.1:6060`，可以使用 `--addr` 指定地址：

    edge-dns pprof --addr="192.168.1.100:6060"

启动后可以在浏览器上访问这个地址，比如 `http://127.0.0.1:6060/debug/pprof/` ，或者使用`go tool pprof`命令来查看，比如查看所有alloc的heap信息：

    go tool pprof -alloc_space  "http://127.0.0.1:6060/debug/pprof/heap"

查看正在使用的内存空间：

    go tool pprof -inuse_space  "http://127.0.0.1:6060/debug/pprof/heap"

查看CPU调用信息：

    go tool pprof  "http://127.0.0.1:6060/debug/pprof/profile"

查看当前正在运行的goroutine：

    go tool pprof "http://localhost:6060/debug/pprof/goroutine"

还有更多的示例可以参考 https://jvns.ca/blog/2017/09/24/profiling-go-with-pprof/。

### 强制执行内存回收

默认2分钟回收一次运行时内存，使用此命令可以强制立即执行回收。此命令跟内存缓存无关。

    edge-dns gc

## 卸载

从GoEdge v1.2.7开始，可以使用命令卸载一个节点程序：

    edge-dns uninstall

卸载成功后，会自动删除`edge-dns`相关服务、目录、文件等。

卸载后，并不会删除缓存策略使用的缓存目录，如有必要，你需要手工删除；如果有遗留的`edge-dns`进程，可以使用 `kill 对应进程ID` 来停止。

{{i18nTranslate('_layout.t27')}}
{{i18nTranslate('_layout.t12')}}