45

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

go run myapp.go &

我应该考虑哪些特定于 Go 的事情?

4

2 回答 2

45

你应该为你的程序构建一个可执行go build文件(我更喜欢后一种解决方案,因为它不依赖于依赖系统的新贵。使用 daemonize 你可以启动你的应用程序

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

这将为您提供一个行为良好的 unix 守护进程,并由 daemonize 完成所有必要的守护进程准备工作。

于 2012-04-09T04:38:27.440 回答
9

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

但是,如果您所追求的只是脱离流程,我已经看到建议执行以下操作之一:

nohup go run myapp.go

或者

go run myapp.go & disown

您还可以使用流程管理器,例如编写init.d,Startup或使用我个人非常喜欢的Supervisor之类的东西。

于 2012-04-09T00:55:29.850 回答