在Ubuntu中作为守护进程启动Go程序的正确方法是什么?然后我会用Monit监控它.我应该做的事情如下:
go run myapp.go &
Run Code Online (Sandbox Code Playgroud)
是否有特定于Go的东西我应该考虑到?
abb*_*bot 38
您应该为您的程序构建一个可执行文件(go build
),然后为upstart编写一个脚本,它将作为守护程序运行您的程序,或者使用daemonize之类的外部工具.我更喜欢后一种解决方案,因为它不依赖于系统相关的新贵.使用daemonize,您可以启动您的应用程序
daemonize -p /var/run/myapp.pid -l /var/lock/subsys/myapp -u nobody /path/to/myapp.exe
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个行为良好的unix守护程序进程,并通过daemonize完成所有必需的守护程序准备.
有关在Go程序中进行守护程序的错误报告:http://code.google.com/p/go/issues/detail? id = 227
但是,如果您所追求的只是从流程中分离出来,我看到建议要么执行以下操作之一:
nohup go run myapp.go
Run Code Online (Sandbox Code Playgroud)
要么
go run myapp.go & disown
Run Code Online (Sandbox Code Playgroud)
您还可以使用进程管理器,就像写一个init.d
,Startup
或使用类似的主管,我个人很喜欢.