小编典典

如何使Golang Web服务器在后台运行?

linux

我最近完成了 Wiki网站开发教程
http://golang.org/doc/articles/wiki/)。我玩得很开心,我想用net
/ http包做更多的实验。

但是,我注意到从控制台运行Wiki时,该Wiki将接管控制台。如果我关闭控制台终端或停止进程,CTRL+Z则服务器将停止。

如何使服务器在后台运行?我认为该术语在守护程序中运行。

我正在Ubuntu 12.04上运行它。谢谢你的帮助。


阅读 992

收藏
2020-06-07

共1个答案

小编典典

简单/可用的东西优先

如果您不费吹灰之力就需要启动脚本,则可以使用该upstart服务。请参见相应的手册页和/etc/init/*.conf示例。创建了这样的过程之后,您可以通过调用以下命令来启动服务器

service myserver start

如果您想要更多功能,例如特定的限制或权限管理,可以尝试xinetd

使用外壳

您可以像这样开始您的过程:

nohup ./myexecutable &

&告诉shell在后台启动命令,保持它在任务列表。在某些外壳上,如果父外壳使用HANGUP信号退出,则作业将被杀死。为避免这种情况,可以使用该nohup命令启动命令,该命令将放弃HANGUP信号。

但是,如果被调用的进程重新连接了HANGUP信号,这将不起作用。

确实可以确定,您需要从Shell的作业列表中删除该过程。对于两个众所周知的外壳,可以通过以下方式实现:

重击:

./myexecutable &
disown <pid>

zsh:

./myexecutable &!

杀死你的后台工作

通常,外壳程序会输出进程的PID,然后可以使用kill命令将其终止,以停止服务器。如果您的外壳未打印PID,则可以使用

echo $!

直接在执行后。这将打印派生过程的PID。

2020-06-07