go语言 Linux web服务器,关于linux:如何让我的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 &

&告诉外壳程序在后台启动命令,并将其保留在作业列表中。

在某些外壳上,如果父外壳使用HANGUP信号退出,则作业将被杀死。

为避免这种情况,可以使用nohup命令启动命令,该命令将放弃HANGUP信号。

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

确实可以确定,您需要从Shell的作业列表中删除该过程。

对于两个众所周知的外壳,可以通过以下方式实现:

重击:

./myexecutable &

disown

zsh:

./myexecutable &!

杀死背景工作

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

echo $!

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

那我该如何退回并停止它或重新启动?

我更新了有关流程启动/停止的答案:)

当关闭终端时,&仍会暂停命令(取决于您的外壳)。 在bash中,您需要在screen,nohup或disown中使用&或ctrl+Z为背景运行它

@lunixbochs,您可能不应该依赖于此上的shell行为。 病态更新我的答案。

感谢您提供如此详细的答案! 我可以看到,如果您在启动后台进程时忘记记录PID,那么像upstart这样的程序将很方便。 我将尝试两种技术并进行报告。

您可以使用Supervisord来管理您的流程。

Monit是另一种选择。

Ubuntu的?使用upstart。

在您的工作的/etc/init中创建一个名为your-service-name.conf的文件

start on net-device-up

exec /path/to/file --option

您可以使用start your-service-name,以及:stop,restart,status

新贵似乎已经被systemd取代了,不是吗? 现在该怎么办? 在Ubuntu LTS 14.04上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值