说一下我认识的*nix下的服务器热重启
步骤:
第一:
收到SIGTERM以后现在的服务器监听socket停止accept
但是并没有停止listen,这个很关键.(所以客户端发起的tcp连接的syn得不到synack,只是继续等待,而不会被拒绝)
第二:
收到sigterm的现有进程继续处理已经accept的socket.
直到处理完毕结束退出.
第三:
在收到sigterm以后,接着发送sighup(要保证现有服务器进程已经停止accept).
第四:
收到sighup以后现有服务器进程serverId1,要fork一个新的进程,
然后把listen的那个socket句柄传递给新exec创建的服务器进程serverId2(至于如何传递,自行百度)
同时还要通过环境变量之类的机制告诉新创建的serverId2,你不用新创建socket listen了,直接用我传递给你的句柄就行了.
serverId2直接用这个句柄愉快的accept就行了.
这样新的服务器进程就完整运行起来了.
这个玩意在win下面没有,我觉得可能是因为以下两个原因
exe运行时不可覆盖,其实这个我觉得不打紧,用一个别的名字就可以了啊.
句柄描述符不能跨进程传递?
这个可以找时间研究一下.
说一下我认识的*nix下的服务器热重启的更多相关文章
- 在Qt中使用sleep(包含为win and *nix下sleep函数的实现及用法)
http://blog.csdn.net/tingsking18/article/details/5304254 关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程 ...
- CentOS 6.3下Samba服务器的安装与配置方法(图文详解)
这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...
- Linux下不同服务器间数据传输--转载
因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...
- Linux下不同服务器间数据传输
因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...
- linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)(zz)
linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl) 分类: linux2011-10-10 13:21 8773人阅读 评论(1) 收藏 举 ...
- linux下的服务器搭建集成环境
linux下的服务器搭建集成环境 ——写给初学者的我们 1.准备工具 1.1 SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录 ...
- php cli方式下获取服务器ip
(未整理....) (1)php cli方式下获取服务器ip [php] function getServerIp(){ $ss = exec('/sbin/ifconfig et ...
- Linux下dns服务器搭建
Linux下dns服务器搭建1-环境Red Hat Enterprise Linux Server release 6.7 (Santiago)2-配置本地yum源安装dns相关包yum -y ins ...
- CentOS下Web服务器环境搭建LNMP一键安装包
CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...
随机推荐
- PHP5.6 安装Yaf 2.3.5
Yaf 安装 PHP5.6 安装Yaf 2.3.5 1.下载 https://github.com/laruence/yaf 2.phpize /usr/bin/phpize 3.配置 ./confi ...
- java mutilThread
可以参考https://www.cnblogs.com/wxd0108/p/5479442.html 这里补充一下我理解多线程这部分的一些要点. 1.首先是java的monitor概念:https:/ ...
- 搭建httpd服务
实验环境:CentOS7 实验步骤: 安装httpd服务:yum -y install httpd 关闭SELinux:setenforce 0 禁用防火墙策略:iptables -F 启动httpd ...
- 前端学习笔记一:什么是W3C?
俗话说好记性不如烂笔头,最近在学习前端技术,一些理论性的知识虽然理解,但有时确不能精准的用语言表述出来,那就索性记下来吧,以备以后时常查看: 我们平时说的W3C,其实是World Wide Web C ...
- Linux的基本指令shell
计算机语言的进化过程,7代语言 机器语言(6种位运算)-> 汇编语言->C语言 -> C++/Java -> Paython / go /Ruby -> 自 ...
- ORA-01145: 除非启用了介质恢复 否则不允许立即脱机
Microsoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation.保留所有权利. C:\Users\Administrator> ...
- SpringDataRedis操作Redis简单案例
Jedis Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用.可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis.SRP等等,推荐使 ...
- Java “hello word” 第一天
//新建包和类 //java是包,c#是命名空间package test1;/** * 需求:练习一个hello word * 思路: * 1.定义一个类,因为java程序都是以类的形式存在的,类的形 ...
- ubuntu 14 编译ARM g2o-20160424
1. 安装eigen sudo apt-get install libeigen3-dev sudo apt-get install libsuitesparse-dev sudo apt-get i ...
- C/C++ 经典面试题汇总
面试题1:变量的声明和定义有什么区别 ? 为变量分配地址和存储空间的称为定义,不分配地址的称为声明.一个变量可以在多个地方声明,但是只在一个地方定义.加入extern修饰的是变量的声明,说明此变量将在 ...