如何使Golang Web服务器在后台运行?
我最近完成了 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。
以上是 如何使Golang Web服务器在后台运行? 的全部内容, 来源链接: utcz.com/qa/431460.html