【发布时间】:2020-03-20 12:19:18
【问题描述】:
我有一个 grpc 服务器(golang),我想通过命令行工具启动和停止它,停止服务器后它应该执行一些内务处理任务并退出进程。
- 我可以通过保持循环等待用户输入来做到这一点。前 -
func main() {
for {
var input string
fmt.Scanln(&input)
//parse input
// if 'start' execute - go start()
// if 'stop' execute - stop() and housekeepingTask() and break
}
}
可以有不同的方法。有没有更好的想法或方法可以使用?
我正在寻找类似于 kafka/any db start 和 stop 工作方式的东西。 任何指向现有解决方案或方法的指针都会有所帮助。
【问题讨论】:
-
服务通常不会从标准输入读取,因为它们通常作为守护进程运行,没有附加 tty 来接收输入。通常,您会使用进程信号发出正常关闭的信号,例如HUP 重新加载配置,TERM 关闭等。
-
感谢您的回答。我正在努力解决这个问题。任何帮助都会很棒