如何在Ubuntu中启动Go程序作为守护进程?

时间:2012-04-08 23:08:32

标签: go

在Ubuntu中作为守护进程启动Go程序的正确方法是什么?然后我会用Monit监控它。我应该做点什么:

go run myapp.go &

Go是否有特定的东西需要考虑?

2 个答案:

答案 0 :(得分:37)

您应该为您的程序(go build)构建一个可执行文件,然后为upstart编写一个脚本,它将作为守护程序运行您的程序,或使用像{{{}这样的外部工具3}}。我更喜欢后一种解决方案,因为它不依赖于系统相关的新贵。使用daemonize,您可以启动您的应用程序,如

daemonize -p /var/run/myapp.pid -l /var/lock/subsys/myapp -u nobody /path/to/myapp.exe

这将为您提供一个行为良好的unix守护程序进程,并通过daemonize完成所有必需的守护程序准备。

答案 1 :(得分:9)

有一个关于在Go程序中守护进程的错误报告:http://code.google.com/p/go/issues/detail?id=227

但如果你所追求的只是从过程中脱离,我看到建议要么做以下其中一项:

nohup go run myapp.go

go run myapp.go & disown

您还可以使用流程管理器,例如撰写init.dStartup或使用我个人非常喜欢的Supervisor之类的内容。