当前位置: 首页 > 面试题库 >

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

东门俊智
2023-03-14
问题内容

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

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

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

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


问题答案:

如果您不费吹灰之力就需要启动脚本,则可以使用该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。



 类似资料:
  • 我用node写了一个工具,如何做到,让用户npm全局安装后,运行直接是后台运行,不需要使用类似pm2之类的工具? 类似Whistle这样的https://www.npmjs.com/package/whistle

  • 我试图开发一个flutter应用程序,它将从服务器每10秒使用计时器获取数据。它在前景时都工作得很好。所以我按照这里提供的文档工作管理器,我可以从服务器得到数据,即使当应用程序在后台,但不能减少频率低于15分钟。我不想在原生android和iOS中编码。我该如何处理这种情况?有没有我遗漏的解决方案?

  • 问题内容: 我有一个flask应用程序,目前正在以以下方式启动: 当我运行此脚本时,它通过打印成功执行: 但是它永远不会返回,如果我执行CTRL-C,服务器将停止。我正在尝试将其部署到生产环境中,并希望在后台运行此启动,只要服务器启动,进程就可以启动。 做这个的最好方式是什么? 问题答案: 可能是使其在后台运行的最简单方法。就是说,如果你要将其转入生产环境(如@LukasGraf所提到的那样,则不

  • 问题内容: 我一直在为Android开发一个包含后台服务的PhoneGap应用程序。我的问题是:如何调试此服务?是否可以使用AVD进行调试并逐步进行?还是可以使用自己的设备来实现? 谢谢! 问题答案: 是的,可以使用AVD或设备来完成。查看http://www.helloandroid.com/tutorials/how-debug- service 和调试服务。

  • 我想创建一个小应用程序,在后台记录数据。所以我试着用绑定服务。这很好,但如果我关闭应用程序,服务也会停止。< br >那么,我的问题是:使用即时服务来执行这一操作是不是一个好方法?当应用程序关闭时,我如何保持服务在后台运行(我也想在启动后启动它)?