关于Go语言daemon启动的方法.

昨天搞了个文件共享的小程序,遇见了意见蛋疼的事,就是启动之后终端不能关闭,不然程序也会随着关闭.
我的解决方法:
	nohup ./httpserver &

nohup这个命令可以把程序放后台运行,顺便通过1>和2>把标准输出和标准错误重定向到文件,这样程序崩溃时才会有记录可查,这两者和程序的日志最好是分开,混在一起没办法判断轻重缓急:

nohup ./server 1> server.out 2> server.err

进程启动时候记录下自己的pid:

if pid := syscall.Getpid(); pid != 1 {
	ioutil.WriteFile("server.pid", []byte(strconv.Itoa(pid)), 0777)
	defer os.Remove("server.pid")
}

同时监听系统发来的kill信号,在收到kill信号时做些收尾工作:

signal.Notify(sigTERM, syscall.SIGTERM)

这样就可以用kill命令关闭服务进程了:

kill `cat game_server.pid`

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 16:39:05

关于Go语言daemon启动的方法.的相关文章

Go语言daemon启动的解决方法.linux平台

1.使用nohup ./commond & 这种方法最简单. nohup这个命令可以把程序放后台运行,顺便通过1>和2>把标准输出和标准错误重定向到文件,这样程序崩溃时才会有记录可查,这两者和程序的日志最好是分开,混在一起没办法判断轻重缓急: nohup ./server 1> server.out 2> server.err 进程启动时候记录下自己的pid: if pid := syscall.Getpid(); pid != 1 { ioutil.WriteFile(&

Docker源码分析(三):Docker Daemon启动

1 前言 Docker诞生以来,便引领了轻量级虚拟化容器领域的技术热潮.在这一潮流下,Google.IBM.Redhat等业界翘楚纷纷加入Docker阵营.虽然目前Docker仍然主要基于Linux平台,但是Microsoft却多次宣布对Docker的支持,从先前宣布的Azure支持Docker与Kubernetes,到如今宣布的下一代Windows Server原生态支持Docker.Microsoft的这一系列举措多少喻示着向Linux世界的妥协,当然这也不得不让世人对Docker的巨大影响

Docker Daemon启动

Docker Daemon 是Docker架构中运行在后台的守护进程,可分为Docker Server.Engine和Job三部分. Docker Daemon 是通过Docker Server模块接受Docker Client的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行,运行过程的几种可能:向Docker Registry获取镜像,通过graphdriver执行容器镜像的本地化操作,通过networkdriver执行容器网络环境的配置,通过execdriver

C语言中常用计时方法总结

转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t time(time_t * timer) 功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的此时此刻所经过的秒数. 用time()函数结合其他函数(如:localtime.gmtime.asctime.ctime)可以获得当前系统时间或是标准时间. 用difft

docker 源码分析 一(基于1.8.2版本),docker daemon启动过程;

最近在研究golang,也学习一下比较火的开源项目docker的源代码,国内比较出名的docker源码分析是孙宏亮大牛写的一系列文章,但是基于的docker版本有点老:索性自己就git 了一下最新的代码研读: docker是c/s的架构,分为docker client 和 docker daemon,client端发送命令,daemon端负责完成client发送过来的命令(如获取和存储镜像.管理容器等).两者之间可以通过TCP,HTTP和UNIX SOCKET来进行通信: docker的启动入口

制作U盘启动盘方法

制作U盘启动盘方法 1. 以管理员权限打开命令提示符 2. 输入diskpart,回车 3. 输入list disk,回车 4. 看一下磁盘大小,确定哪个磁盘是我们需要操作的U盘,然后输入select disk+相应的序号,注意这一步一定不要选错了 5. 输入clean清除磁盘全部内容 6. 输入create partition primary创建主分区 7. 输入active将分区激活为活动分区 8. Windows+R打开运行窗口输入diskmgmt.msc打开磁盘管理 9. 右键点击U盘选

ubuntu 14.04 安装 vmware 10 X64 后无法启动解决方法

ubuntu 14.04 安装成功后,平时的工作什么的都够用了, 最近需要做一个测试,测试环境还必须是windows的.所以就准备整个虚拟机来,kvm 跟 vmware 考虑再三,选择了 vmware .vmware 10的安装方法,就不做说明了.度娘或谷哥还是有蛮多方法.我这里所写的是,vmware 安装后,启动时报错. 报错图片如下: 解决方法: 当然方法有很多种,我也试过几种方法,有使用patch 的,但是我用这种方法的时候,出现错误了,继续找方法的时候,有网友有告诉过这样一种方法,就是手

win7系统服务print spooler 无法启动解决方法(开启及关闭方法)

以下是小编从新浪博客一个大雕博客中找到的“print spooler 无法启动”解决方法,请您仔细参考. 在下的系统是Windows7正式版,因为经常要制作PDF文件,所以对虚拟打印机使用较多,在下的虚拟打印机是Adobe Acrobat下自带的虚拟打印机,这都不是关键,虚拟打印机哪一个版本都一样,关键在于转换PDF文件或者打印输出文件,需要启动Print spooler服务(鉴别方法:没有此项服务,Word.Excel中更换纸张方向等将无法进行,并且开始菜单“设备和打印机”中“打印机和传真机”

WINDOWS INSTALLER无法启动解决方法

WINDOWS INSTALLER无法启动解决方法 2011-04-13 10:18:32 标签:操作系统 windows 休闲 职场 第一步:使用记事本编写installer.reg文件,内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSIServer] “ImagePath”=- “ImagePath”=hex(2):25,00,53,00,79