go - 如何在Golang中使用命令行工具启动和停止服务器

标签 go unix server

我有一个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 /任何数据库启动和停止工作。
    任何指向现有解决方案或方法的指针都将有所帮助。

    最佳答案

    我也得到了@Mehran评论/回答的正确方法之一。但让我花点时间回答一下-

    这可以通过进程间通信来解决。我们可以有一个bash文件,该文件将用户信号发送到该程序(如果已运行),并且可以基于其进程对其执行操作。 (即使我们可以拥有stdin文件,该进程也可以读取并对其执行操作)

    一些有用的链接-
    -https://blog.mbassem.com/2016/05/15/handling-user-defined-signals-in-go/
    -Send command to a background process
    -How to signal an application without killing it in Linux?

    我将尝试添加可运行的程序。

    关于go - 如何在Golang中使用命令行工具启动和停止服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60774003/

    相关文章:

    tomcat - 服务器 MyEclipse Tomcat v7.0 无法在 45 秒内启动。如果服务器需要更多时间,请尝试在服务器编辑器中增加超时

    go - 计算 MD5 正弦整数部分时遇到问题

    go - 如何将 []int 转换为 [2]int?

    go - GC是否处理数组的未指向部分

    c - 在 OSX 上安装 rng-tools 时出现 undefined symbol argp_parse 和 arpg_usage

    bash - 使用 awk 将数组字符串与 awk 中的字符串进行比较

    java - Tomcat 如何加载不同的 war 文件?

    go - 如何通过 go generate 传递参数

    创建一个用 C 语言执行多个命令的程序

    python - 扭曲的框架服务器作为客户端建立连接?