• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zjsxwc
V2EX  ›  程序员

golang 程序怎么快速重启自己?

  •  
  •   zjsxwc ·
    zjsxwc · Mar 1, 2018 · 6609 views
    This topic created in 3020 days ago, the information mentioned may be changed or developed.

    我就想强制快速重启,数据丢失也无所谓,看了Graceful Restart in Golang用多进程搞太麻烦了。

    9 replies    2018-03-01 22:37:54 +08:00
    TangMonk
        1
    TangMonk  
       Mar 1, 2018 via Android
    systemd
    zjsxwc
        2
    zjsxwc  
    OP
       Mar 1, 2018 via Android
    @TangMonk

    如果 win 下呢?
    jswh
        3
    jswh  
       Mar 1, 2018
    supervisor
    Immortal
        4
    Immortal  
       Mar 1, 2018
    写个 sh 脚本 kill 掉嘛
    fatjiong
        5
    fatjiong  
       Mar 1, 2018
    supervisor+1
    keepfun
        6
    keepfun  
       Mar 1, 2018
    用信号监控,如果收到这个信号,直接 kill 掉自己 pid(开始启动程序的时候,拿到自己的 pid),然后执行启动自己的脚本,或者等待 supervisor 来启动.
    自己没试验过哈.
    ```
    s := make(chan os.Signal, 1)
    signal.Notify(s, syscall.SIGUSR2)
    go func() {
    for {
    <-s
    execcmd()
    fmt.Println("ReLoad")
    }
    }()
    ```
    TangMonk
        7
    TangMonk  
       Mar 1, 2018 via Android
    @zjsxwc 用 service 應該可以
    MeteorCat
        8
    MeteorCat  
       Mar 1, 2018 via Android
    systemctl 学习下,常驻应用都需要用到
    codehz
        9
    codehz  
       Mar 1, 2018
    linux 下直接 exec 不就好了(还可以保留源 pid
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2732 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
    ♥ Do have faith in what you're doing.