在Ubuntu中作为守护进程启动Go程序的正确方法是什么?然后我会用Monit监控它。我应该做点什么:
go run myapp.go &
Go是否有特定的东西需要考虑?
答案 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.d
,Startup
或使用我个人非常喜欢的Supervisor之类的内容。