Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ubuntu中启动Go程序作为守护进程?_Go - Fatal编程技术网

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

如何在Ubuntu中启动Go程序作为守护进程?,go,Go,在Ubuntu中启动Go程序作为守护进程的正确方法是什么?然后我将用Monit监视它。我是不是应该这样做: go run myapp.go & 是否有一些特定的Go问题需要考虑?有一个关于Go程序中daemonize功能的错误报告: 但是,如果您所追求的只是脱离流程,我看到建议您执行以下操作之一: nohup go run myapp.go 或 您也可以使用进程管理器,比如编写init.d,启动,或者使用类似的东西,这是我个人非常喜欢的。您应该为您的程序构建一个可执行文件(go bu

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

go run myapp.go &

是否有一些特定的Go问题需要考虑?

有一个关于Go程序中daemonize功能的错误报告:

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

nohup go run myapp.go


您也可以使用进程管理器,比如编写
init.d
启动
,或者使用类似的东西,这是我个人非常喜欢的。

您应该为您的程序构建一个可执行文件(
go build
),然后为您编写一个脚本,它将作为守护进程运行您的程序,或者使用外部工具,如。我更喜欢后一种解决方案,因为它不依赖于依赖于系统的暴发户。使用daemonize,您可以启动应用程序,如

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

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

我们就是这样在工作中完成的。Goroutines使进程中的守护进程复杂化。在RHEL上,我们使用标准的Sys V启动/停止/重启脚本。在其他地方,你可能会想使用目标操作系统使用的任何东西……upstart等等。在Windows上,我们有一个用C#编写的小型Windows服务,它在那里做同样的事情。谢谢。你介意分享你的C#代码吗,Nate?还有一个替代方案,专门为Go程序构建。如果不迫切需要每次重新编译你的应用程序,你应该构建一次,并像使用其他编译语言一样运行它。见方丈的回答
daemonize -p /var/run/myapp.pid -l /var/lock/subsys/myapp -u nobody /path/to/myapp.exe