【问题标题】:golang, run with daemonizegolang,使用守护进程运行
【发布时间】:2023-05-24 03:03:01
【问题描述】:

构建到文件之后。我用命令守护进程运行它

daemonize /var/www/repo/bin/tracking_api 1>> /var/www/repo/bin/tracking_api.log

我看到它生成了一个新文件,但该文件中没有任何内容。在代码中我 log.Print 很多。

我只了解 GO 的基本知识,请指导我记录。有没有更简单的方法可以将 golang 运行到服务器而不是使用 daemonize?

【问题讨论】:

    标签: go daemon


    【解决方案1】:

    将日志记录到标准错误,重定向标准错误,它会正常工作。

    /var/www/repo/bin/tracking_api 2>&1 >> /var/www/repo/bin/tracking_api.log
    

    不幸的是,daemonize 工具关闭了标准输入、输出和错误,因此唯一的解决方案是使用SetOutput 函数更改日志文件。

    【讨论】:

    【解决方案2】:

    nohup /var/www/repo/bin/tracking_api > /var/www/repo/bin/tracking_api.log &  

    【讨论】:

    • 您可以通过解释您的解决方案做了什么或主题创建者做错了什么来改进仅“代码/命令”的答案。
    【解决方案3】:

    你可以使用immortal 基本上是一个主管,你可以这样使用它:

    immortal -l /var/www/repo/bin/tracking_api.log tracking_api
    

    或通过configuration YAML 文件为您提供更多选项,例如:

    cmd: tracking_api
    log:
        file: /var/www/repo/bin/tracking_api.log
        age: 86400 # seconds
        num: 7     # int
        size: 1    # MegaBytes
        timestamp: true # will add timesamp to log
    

    如果您还想将标准错误输出保存在单独的文件中,您可以使用以下内容:

    cmd: tracking_api
    log:
        file: /var/www/repo/bin/tracking_api.log
        age: 86400 # seconds
        num: 7     # int
        size: 1    # MegaBytes
    stderr:
        file: /var/www/repo/bin/tracking_api.log
        age: 86400 # seconds
        num: 7     # int
        size: 1    # MegaBytes
        timestamp: true # will add timesamp to log
    

    【讨论】:

      最近更新 更多