【已阅】Linux进程维护技术初探.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【已阅】Linux进程维护技术初探

Linux 进程维护技术初探 一、引言 本文取这个名字可能过于大气了,不过还是定下来了,目的是希望有更多的朋友参与进来, 给出更好的意见和看法,对文中的方法进行不断的改进. 一直很佩服老外的文章,写的很通俗易懂,而且多原创佳作;而国内的文献,好多都是翻译 或者 copy 的,希望国人的原创思想能够更多的表现出来. 本文中要提到的技术很容易理解, 不过觉得还是蛮有创新思想的,而且是自己的感受与不断改进得出的经验之谈(在技术上并没 有多高深,不过觉得对实际开发很有实用价值),所以才敢发出来,当中肯定不乏错误种种,欢 迎指出! 二、 进程维护简介 提到进程维护,概念很简单,就是想办法让用户的程序不被随意结束掉,或者说即使结束了,也 能再次起来,当然,我们这里讨论的程序退出不包括你的代码错误引起的异常,而是被意外的 外界条件结束,比如数据库短暂断掉,用户随意错误结束进程等(比如我测试代码时常用的 kill命令).我想进程维护最笨的方法就是管理员通过PS命令查看进程是否正常运行,如果结 束掉了,则再次手动启动程序,当然这样的情况并不多见,而且这样的做法肯定是不行的,因为 没有人愿意守着机子不停的观看,看他启动的程序是否结束掉了,所以最好将这样无聊的任务 交给机器自己去做. (1):进程信息 为了能够在进程结束后再次启动某个进程,我们需要保存程序运行所必须的信息,包括运 行路径,运行参数,权限等信息,(如果你的目的不仅仅是再次重启进程的话,其它的信息或许 更重要些). 所以在进程运行还没有被结束之前,我们最好将这些信息保存起来,保存进程信 息的方式很多,如果不太容易丢失的话,可以选择存在内存中,也可以存在文件中或者共享内 存中 (2):进程队列 你不可能花很多力气发明一种技术去维护一个进程,那样确实有些大材小用.现实中往 往需要对很多进程进行维护,所以,为了对这么多进程进行统一管理,必须存在一个进程队列. (3):进程维护者 要维护进程队列中的进程就需要一个程序专门去检测所有被维护进程的状态,并在判断某 个进程已经结束后将它重新启动.在这里,我们称这个进程为进程维护服务器,其实就是一个 很简单的程序,它拥有所有被维护进程的信息,而且能够对进程的状态作出简单的判断或者猜 1 测,当目标进程被确认已经阻塞住或者死掉时,它能够再次启动目标进程. (4)进程之间的消息机制 进程维护服务器要获取被维护进程的最新状态,就需要同每一个被维护的进程进行通讯. 关于进程通信,有好多种机制,在此,我们选择了 Socket 的方式,因为这样可以将进程维护服 务器部署在网络上的任意一台机子上(前提是它有权限远程结束并且启动另外一台机子上的 进程),在本文的实例代码种,只是单机维护,因为我对于远程进程结束和启动的方法还不了解. (5)进程之间的时间戳同步 为了更新每个进程的最新时间和方便进程维护服务器检测出每一个进程最近一次与其通讯的 时刻到当前的时间差,被维护进程每向进程维护服务器发送一个消息,里面都包含了当前的时 间,在进程维护服务器端,服务器会将这个进程的最新时间更新为消息中的时间,当然,对于网 络上的机子,可能会有不同的本地时间,所以应该选择消息中的时间作为当前的时间,而对于 本机上的进程发过来的消息,只需要取本地的时间即可,因为它们拥有相同的时间值.在本文 中,我们让进程维护服务器另外启动一个进程,每隔一秒向进程维护服务器发送一个消息,这 样对于以阻塞方式接收消息的服务器来说,每隔一秒,它都能收到至少一个消息(那就是它所 创建的进程发送过来的时间更新消息),在收到时间更新消息后,进程维护服务器便会根据当 前时间去遍历进程节点列表,根据当前时间和每个进程的最新时间计算一个时间差,如果这个 时间差大于此进程注册的超时上限,那么我们就认为此进程已经阻塞掉或者被结束了,此时, 只需要根据原来此进程注册发送的 PID 简单的结束此进程(很可能这个进程已经被结束掉了), 然后根据此进程注册的路径和参数,再次重启此进程,并删除此节点,因为重启的进程会再次 注册一个结点的. 以上就是整个进程维护服务器和每个被维护进程合作的方式,下面给出具体的数据结构和 函数列表. 三, 数据结构及流程简介 首

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档