Tom*_*son 7 scripting daemon init.d
我(或我的一位同事)需要编写一个或多个 shell 脚本来控制守护进程的执行。我们需要能够启动守护进程,告诉它正常关闭,并强制关闭。基本上,这是人们传统上使用脚本进行的那种事情/etc/init.d
。
我们将部署到 Ubuntu。我们可能希望部署到 RedHat/CentOS,也可能部署到 AIX。我希望能够部署到任何 unix,因为我喜欢可移植性地做事。
那么,是否可以编写可移植的服务脚本?
我想我可以编写一个便携式 Bourne shell 脚本,它的工作方式类似于普通的 init.d 脚本,并接受“开始”和“停止”作为命令。这可以在任何地方工作,并且至少可以在 Debian 和 RedHat 风格的系统上提供自然的界面。它适合其他地方吗?init.d 是通用的吗?有什么需要注意的陷阱吗?
有没有什么工具可以生成不同形式的服务脚本?我可以编写用于启动和停止的脚本片段,并让该工具为各种不同平台生成脚本。
对于特定于平台的服务脚本约定,是否有任何替代方案?我遇到过daemontools和runit;这些是 init.d 脚本的替代品吗?他们有什么好处吗?还有什么这样的?
这有道理吗?
可以以某种方式编写它们,使其不依赖于发行版的具体情况,但并非所有 *nix 都以相同的方式启动服务。我不确定 AIX,但例如 Solaris 甚至不使用 sysvinit,而是使用 smf。
CentOS/RHEL 通常使用 /etc/rc.d/functions 来协助 init 脚本的常用功能,而 Debian 使用名为 start-stop-daemon 的二进制文件。这可能是上游包中经常找不到初始化脚本的原因。
就我个人而言,我会为每个受支持的操作系统编写一个初始化脚本,并将其包含在该操作系统的软件包中。