我正计划从 Solaris/x86 迁移到 RHEL6。此迁移的一部分是将服务从 SMF 迁移到 RHEL6 等价物,这似乎是新贵。虽然似乎仍然支持 init.d 脚本,但我想利用更复杂的 init 守护程序,特别是对于作业监督(重新启动等)等功能。我想就以下几点收集一些想法:
1) upstart 是否是一个足够的工作主管,即它是否排除了对像 daemontools/supervise 这样的独立管理器的需求?
2) 与典型的 init.d 脚本相比,Upstart 脚本看起来非常简单。如果我将 init.d 脚本移植到 Upstart,是否可以只执行“exec /etc/init.d/myjob start”?这包括 RHEL 安装的程序,如 httpd。
3) upstart 是否对 pid 文件做任何事情,它对进程的分叉模型有什么期望?
4) Upstart 的流程管理方面是否有任何直接的指南……我的意思是控制重启的条件?例如,在进程进入维护状态之前重启进程多少次,或者忽略受监督进程的子进程中的错误/核心转储。
任何其他相关的想法或指南将不胜感激。
TIA
不要为在 RHEL6 上使用 upstart 的任何“高级”功能而烦恼。它仅使用 upstart 作为原始 SysVinit 的“替代品”,并且仅使用旧式 init 脚本。RHEL 本身并没有利用任何新的 upstart 功能,而且 RHEL7 不包括 upstart。事实上,除了 Ubuntu(只是因为他们发明了它)和 Debian 之外,现在几乎所有人都抛弃了新贵。RHEL7 使用 systemd,许多其他现代 Linux 发行版现在都在使用它,而 Debian 正在切换中。
为了让您的脚本适应未来,请编写一个“正常”的初始化脚本;systemd 也支持这些以实现向后兼容性,尽管与 RHEL6 中的新贵不同,systemd 的新功能实际上在 RHEL7 中使用。Internet 上有许多编写 SysVinit 脚本的教程;Fedora 项目提供了一个非常好的。当您迁移到 RHEL7 时,您可以根据需要切换到 systemd 单元文件。