func initGin() {
// ? 带参数启动
var port string
flag.StringVar(&port, "p", "3312", "端口号默认:3312")
flag.Parse()
r := gin.Default()
r.Any("/:name", func(c *gin.Context) {
gitUpdate(c.Param("name"))
c.JSON(200, "更新成功")
})
r.Run(":" + port)
}
func gitUpdate(name string) {
buf, _ := ioutil.ReadFile("./config.yaml")
var conf Conf
_ = yaml.Unmarshal(buf, &conf)
for _, value := range conf.Task {
if name == value.Name {
cmd := exec.Command("git", "pull")
cmd.Dir = value.Path
err := cmd.Run()
if err != nil {
fmt.Println(err)
}
}
}
}
我这里是用的cmd.Run();
理论上来说来这里应该会阻塞,运行完毕后,在执行后台的代码。
但是如果我用supervisord 这个后台守护工具运行,程序是运行起来了的,但是这个git 命令感觉没有执行或者说,直接运行到下面的输出语句哪里去了,会直接输出 "更新成功"
但是我独立运行软件,git 又是成功执行的。
所以我有点晕。
是exec.Command(),cmd.Run() 的问题?
还是supervisord 的后台守护的问题?
请问如何处理!