在编写博客的 Gitee webhook 服务器时,需要通过 golang 来执行命令,比如 git pull 和 hugo build 这样的,博客使用的 hugo 命令是通过 Docker 的 klakegg/hugo 镜像创建一个用后即删的容器来调用,因此我对于 Docker 容器的调用做了封装,使用 shell 来执行。在测试服务器的过程中,发现对于执行 hugo build 命令出现了错误,结果为 "exit status 1",需要找到其中的问题才能顺利运行服务器,自动更新博客内容。
测试 确定执行命令的用户 我们首先确认 docker 命令的可执行权限:
main.go:
func main() { cmd := exec.Command("whoami") output, err := cmd.Output(); if err != nil { log.Printf("RunHugoBuild: command: \"%s\", error: \"%s\"", cmd.String(), err.Error()) } log.Printf("%s", output) } stdout:
2020/08/19 15:43:29 root 通过执行 whoami,我们可以确认运行程序的用户是 root 并且也确认了命令可以执行。
测试能否执行自定义脚本 我们编写一个 run.