我做了个管理程序,有管理程序来启动服务,管理程序会调用shell脚本,shell脚本创建对应的服务
代码如下:
func HandleShellTradePair(job *goresque.Job) bool {
cmdShell := []string{data.Get("shell_root").MustString()}
if paramArry := data.Get("params").MustStringArray(); len(paramArry) > 0 {
//命令参数
cmdShell = append(cmdShell, paramArry...)
}
//执行脚本
cmd := exec.Command("/bin/bash", "-c", strings.Join(cmdShell, " "))
//shell脚本输出
buff := &bytes.Buffer{}
cmd.Stdout = buff
logs.Info("start run shell", cmdShell)
errRun := cmd.Run()
if errRun != nil {
logs.Error(errRun)
} else {
logs.Info(buff.String())
}
return true
}
全部代码如下:
func HandleShellTradePair(job *goresque.Job) bool {
data, err := simplejson.NewJson([]byte(*job.Args))
if err != nil {
logs.Error(err)
return false
}
//shell脚本路径
cmdShell := []string{data.Get("shell_root").MustString()}
if paramArry := data.Get("params").MustStringArray(); len(paramArry) > 0 {
//命令参数
cmdShell = append(cmdShell, paramArry...)
}
//执行脚本
cmd := exec.Command("/bin/bash", "-c", strings.Join(cmdShell, " "))
// cmd.
//设置父子进程分离
cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags:syscall.CREATE_UNICODE_ENVIRONMENT}
//shell脚本输出
buff := &bytes.Buffer{}
cmd.Stdout = buff
logs.Info("start run shell", cmdShell)
errRun := cmd.Run()
if errRun != nil {
logs.Error(errRun)
} else {
logs.Info(buff.String())
}
return true
}
#1