我正在尝试定期运行一些函数并在后台运行,因为我也在服务于web服务。
import ("strings")
func run (cmd string, c chan []byte) {
parts := strings.Fields(cmd)
head := parts[0]
parts = parts[1:len(parts)]
out, err := exec.Command(head, parts...).Output()
if err !=nil {
log.Fatal(err)
}
c <-out
}
func main() {
c:=make(chan []byte)
go run ("date",c)
output :=string(<-c)
}
我想每隔几秒运行“date”,“uptime”,“ps”等命令,并在后台运行web服务(net / http)将在前台运行,输出这些函数的结果。
实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
你应该首先找到一些lib或编写某种实用程序,它允许你连续运行一个任务,实际上你的代码没有。
例如:https://github.com/jasonlvhit/gocron
这只是一个例子,我不知道这个lib是否合适。
然后,您应该选择任务和Web服务之间的接口。
你可以在一个中运行,并使用频道,每个任务一个与go例程通信。
或者您可以使用您的go rountines编写的数据以及您的Web服务读取和处理来编写文本文件。
还有其他一些方法或解决方案,这是我现在最容易想到的。
希望这有帮助。