[原创]Linux下使用Daemon实现服务器永久存活
很多服务器端设计者,很少会考虑到服务器永久存活或热替换的问题,貌似真的很少
其中永久存活最大的理论支持就是,我们如何真正的保证一组服务器持续的存在,即便宕机?
其实没有人能保证自己写的代码那么完美无瑕,因为它的存在就是必须去崩溃,必须暴露更多的错误才能更加完美无瑕,所以除了自己有大量的测试代码外,其实对于程序本身的测试很多是无法达到的,那么我们就需要更多的外部支持,那么在实际运营中,最好的就是Daemon这样的系统。
1、什么是Daemon
其实Daemon是一种进程守护者(守护进程),他保护你的系统免于遭受外部或异常错误而导致的崩溃,并在最短的时间内使其迅速恢复的一种机制或系统。
当然我在这里可不是教你怎么去写一种Daemon,因为对很多团队,那个成本很没必要(我们有更省钱的做法)。
那就是 http://libslack.org/ 的自制软件Daemon,它将自动保护任意进程,并保证程序持续稳定运行,直到你将其KILL或Stop掉,前提自然是要关闭掉Daemon本身。
2、安装Daemon
首先直接从地址:http://libslack.org/daemon/download/daemon-0.6.4.tar.gz 中下载Daemon的最新源码。
然后上传至Linux服务器
tar -xvf daemon-0.6.4.tar.gz
cd daemon-0.6.4
注意:在这一步是不可以配置Daemon的安装路径的,它将被默认安装至 /usr/local/bin 中,但会创建全局快捷方式,即可直接使用 daemon来运行程序。
./config
make -j8
make install-daemon
注意:这一步是为了安装Daemon的配置文件 默认被安装至 /etc/daemon.conf
make install-daemon-conf
3、配置Daemon以及参数说明
其实Daemon本身的参数是可以直接放入 /etc/daemon.conf 中的,那么基本上配置文件使用起来是非常容易的。
打开远端的daemon.conf
其配置文件格式为
配置名称(配置名称与参数列表间,使用空格分隔) 参数列表(多参数使用 英文字母 逗号分隔),例如:
test_server respwan
参数说明(部分):
-h, --help - 打印帮助信息
-V, --version - 打印版本信息
-v, --verbose[=level] - 设置冗余级别
-d, --debug[=level] - 设置调试级别
-C, --config=path - 指定特殊的配置文件路径,默认为:/etc/daemon.conf
-N, --noconfig - 将不读取任何配置文件信息即不读取 /etc/daemon.conf
-n, --name=name - 配置项目的名称,将载入目标名称参数信息
-X, --command=cmd - 定义特殊的后缀参数,例如需要参数启动的话
-D, --chdir=path - 改变运行目录
-m, --umask=umask - 改变目标执行程序的MASK
-U, --unsafe - 运行无安全状态执行程序
-S, --safe - 运行安全执行程序
-c, --core - 生成核心文件,用于调试
-r, --respawn - 当程序关闭时,是否重新启动程序
-f, --foreground - 前台运行程序
-p, --pty[=noecho] - Allocate a pseudo terminal for the client
-l, --errlog=spec - 定义DAEMON的目标错误日志位置
-b, --dbglog=spec - 调试日志位置
-o, --output=spec - 输出运行程序的日志
-O, --stdout=spec - 输出运行程序的输出
-E, --stderr=spec - 输出运行程序的错误日志
--running - 检测此名称的程序是否已经运行
--restart - 重新启动此程序名称程序
--stop - 结束此名称的程序
4、开始使用Daemon
使用时,首先配置目标程序的参数,默认情况下,会添加参数 respawn 用于检测当程序关闭时重新启动程序,例如daemon.conf中增加此选项
test_server respwan,chdir=/home/test_server
例如此时我要启动test_server那么,直接在shell中输入
daemon --name=test_server /home/test_server/test_server
此进程将被守护,直到整个运行周期完成。
此处启动的是位于:/home/test_server 下的 test_server 程序
5、应用场合以及扩展探索
此系统非常适合应用于需要强力保护的程序,如配合其他异常捕捉系统,将可以很好的保证整个服务器的运行以及崩溃BUG的修复情况。
也可以通过其他外部程序,控制或监控daemon的运行情况,可以合理的控制整个系统的开启以及结束,太棒了这东西
[原创]Linux下使用Daemon实现服务器永久存活的更多相关文章
- linux下安装配置svn服务器
linux下安装配置svn服务器 1. svn服务器安装 将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器. tar xfvz su ...
- Linux下配置一个VNC服务器
在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码. 然后在客户端使用ssh+vncview的方式访问. 1确认vnc安装 2配置vncserver 3测试vnc ...
- linux下搭建svn本地服务器
在linux下搭建svn本地服务器可以很好的管理自己的代码,具体过程如下: # mkdir svn_local # cd svn_local # svnadmin create led_diplay ...
- [原创]Linux下网络性能测试Netperf工具介绍及安装
[原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...
- Linux下如何部署FTP服务器
FTP 是 File Transfer Protocol 的缩写,即文件传输协议,它通过网络在服务器和客户端之间传输文件,现在已经成为一种广泛使用的标准工具 vsftpd 是 very secure ...
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...
- Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...
- Linux下几种并发服务器的实现模式
Linux下的几种并发服务器的设计模式 1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. ...
- (原创)linux下Microsoft/cpprestsdk支持https(server)
原创,转载请标明源地址 之前看网上一堆的资料说Microsoft/cpprestsdk不支持https或者说只支持window下的https,差点就被误导了,没办法,只好自己去翻了下源代码 先说明下l ...
随机推荐
- GOF23设计模式之装饰模式(decorator)
一.装饰模式概述 (1)动态的为一个对象增加新的功能. (2)装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能. 使用对象的关联关系代替继承关系,更加灵活,同时避免类型体 ...
- Zookeeper--Watcher 和 ACL
Zookeeper--Watcher 和 ACL Watcher (观察) Zookeeper中的znode可以被监控,这是zk的核心特性. 通过exists,getChildren和getData这 ...
- python 高阶内置函数
1.lambda 匿名函数 lambda 参数: 返回值 函数名统一都叫lambda. 2.sorted() 排序函数 排序函数 sorted(iterable,key,reverse) key:排序 ...
- TCP之二:TCP的三次握手与四次分手
一.TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础 ...
- Java-Runoob:Java Stream、File、IO
ylbtech-Java-Runoob:Java Stream.File.IO 1.返回顶部 1. Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出 ...
- Mac OS Virtualbox 倒入 ova 镜像文件
原文:https://www.zhihu.com/question/40785995 ------------------ 自己亲测 --------------------- 把 windows 系 ...
- laravel 环境自编译过程
[原创] 看到此文的朋友看完后也许会失望,但我尽最大努力不让搜友们失望,以下是自己操作的笔记用以整理提高 虽然 laravel 官方已给出了安装 laravel 框架所需的环境盒子 使用Vagrant ...
- .NET System.Web.HttpContext.Current.Request报索引超出数组界限。
移动端使用Dio发送 FormData, 请求类型 multipart/form-data, FormData内可以一个或多个包含文件时. 请求接口时获取上传的fomdata数据使用 System.W ...
- Hadoop Map/Reduce的工作流
问题描述 我们的数据分析平台是单一的Map/Reduce过程,由于半年来不断地增加需求,导致了问题已经不是那么地简单,特别是在Reduce阶段,一些大对象会常驻内存.因此越来越顶不住压力了,当前内存问 ...
- jquery.easyui.tabs 中的首个tabs被最后tabs覆盖的问题解决方法
这是由于tabs对href重载的的问题导致,因此我们需要将href更改为其它自定义的属性即可避免此问题的发生. 解决方法如下: 第一步页面端: 循环体开始 <li> <div> ...