runit
外观
| 原作者 | 格里特佩普(Gerrit Pape) |
|---|---|
| 首次发布 | 2004年2月10日[1] |
| 当前版本 | 2.3.1[2] |
| 编程语言 | C, Shell |
| 操作系统 | Linux,BSD,Mac OS X,Solaris |
| 类型 | init守护进程 |
| 许可协议 | 新BSD许可证 |
| 网站 | smarden |
runit是一种类Unix操作系统的init方案,可在整个操作系统运行时初始化、监视及终止进程。runit是可在Linux、Mac OS X、*BSD和Solaris操作系统上运行的、有“开创性”的daemontools的“再实现”。[3]runit可并行启动系统服务,这样可以加快操作系统的启动。[4]
如System V init,runit是所有其他进程直接或间接的父进程。它是在启动过程中第一个运行的进程,并继续运行直至系统关闭。
设计
[编辑]runit致力于成为一个小型、模块化、可移植的代码库。runit分为三个阶段:一次性的初始化,进程监视,及停止或重新启动。除了第一和第三阶段必须适应所运行的特定操作系统外,第二阶段在所有POSIX兼容的操作系统都可方便移植。[4]这三个阶段可通过三个可执行文件(通常为 Shell 脚本)进行配置,它们分别命名为 1、2 和 3。
第二阶段通常会调用一个名为 runsvdir 的二进制程序,该进程负责系统范围内守护进程的管理:对于其参数指定目录中的每一个守护进程,它都会创建一个独立的监视器(watchdog);每个监视器负责启动相应的守护进程(以及与其关联的日志服务,如有),并在该进程异常终止时自动将其重新启动。当有守护进程被添加或移除时,它会相应地启动新的监视器或终止已有监视器。
系统通过使用具有特定名称的可执行文件来描述守护进程生命周期的各个阶段(如 run、check、finish 等)。它还能够拦截发送给守护进程的信号,并在对应脚本存在时执行这些脚本。此外,系统会创建命名管道,以提供用于控制守护进程的接口。
参考
[编辑]- ^ Pape, Gerrit. runit-1.0.0 release. gmane.comp.sysutils.supervision.general (邮件列表). 2004-02-10 [2013-12-10]. (原始内容存档于2013-12-13).
- ^ Release 2.3.1. 2026年2月7日 [2026年4月25日].
- ^ Purcell, Steve. Init Scripts Considered Harmful. sanityinc.com. 2007-11-11 [12 December 2013]. (原始内容存档于2014-02-18).
- ^ 4.0 4.1 Pape, Garret. runit - benefits. [23 April 2013]. (原始内容存档于2014-09-23).