对于像supervisord 这样的进程控制器,RHEL init.d 脚本中的 chkconfig 行应该设置为什么?

Mat*_*sen 6 rhel nginx init init.d supervisord

init.d我正在尝试第一次编写脚本来启动supervisord进程。Supervisor 是一个过程控制器/管理器,如runitupstart、 或systemd。我希望它在系统重新启动时自动启动,以便它可以启动我的应用程序。

我使用这个tldp 教程作为编写脚本的基础init.d。它工作正常,但我不明白应该如何修改文件中的这一行:

# chkconfig: 2345 95 05
Run Code Online (Sandbox Code Playgroud)

本行教程中的注释指出:

尽管这些是注释,但它们由 chkconfig 命令使用并且必须存在。该特定行定义在运行级别 2、3、4 和 5 上,该子系统将以优先级 95(最后一个)激活,并以优先级 05(第一个)停用。

这个RHEL 文档解释了各种运行级别:

0 - Halt
1 - Single-user text mode
2 - Not used (user-definable_
3 - Full multi-user text mode
4 - Not used (user-definable)
5 - Full multi-user grapical mode
6 - Reboot
Run Code Online (Sandbox Code Playgroud)

从这些选择中,我想我想在 上运行我的35,假设 1 仅适用于系统管理员。

有一些示例 Supervisordinit.d脚本,例如此处。我注意到所有 RHELinit.d脚本都包含以下行:

# chkconfig:    345 83 04
Run Code Online (Sandbox Code Playgroud)

在这种情况下,作者有什么理由希望它在“未使用”的运行级别 4 上处于活动状态?

我安装的 nginx init.d 脚本包含以下行:

# chkconfig:   - 86 16
Run Code Online (Sandbox Code Playgroud)

-这里的运行级别是什么意思?

为什么这一行不包含停用优先级?

如何确定像这样的过程控制器的优先级supervisor?上面的脚本选择了 83 和 04,而 tldp 教程选择了 95 和 05。

Gan*_*ang 4

chkconfig:    345 83 04
Run Code Online (Sandbox Code Playgroud)

在这种情况下,作者有什么理由希望它在“未使用”的运行级别 4 上处于活动状态?

由于不使用运行级别 4,因此打开或关闭它并不重要。345是比较容易写的、偷懒的方法。

你以后可以随时更改它

chkconfig --list supervisord
chkconfig --level 4 supervisord off
chkconfig --level 3 supervisord on
Run Code Online (Sandbox Code Playgroud)

我安装的 nginx init.d 脚本包含以下行:

chkconfig:   - 86 16
Run Code Online (Sandbox Code Playgroud)

这里的 - 对于运行级别意味着什么?

这意味着您必须将破折号替换为级别或保持原样由 chkconfig 设置

chkconfig:   345 86 16
Run Code Online (Sandbox Code Playgroud)

为什么这一行不包含停用优先级?

345 run levels
86  activate priority
16  deactivate priority
Run Code Online (Sandbox Code Playgroud)

如何确定主管等过程控制器的优先级?上面的脚本选择了 83 和 04,而 tldp 教程选择了 95 和 05。

这些只是示例,并非真正的真实情况,它们的设置不同。

优先级通常并不重要,因为你不会定期打开或关闭你的机器,我不熟悉你的应用程序,我会推荐这个。

此网址包含不同的优先级 https://rayed.com/wordpress/?p=1496

    chkconfig: 345 64 36
Run Code Online (Sandbox Code Playgroud)

或保持原样,让 chkconfig 为您配置它

chkconfig: - 64 36
Run Code Online (Sandbox Code Playgroud)

我在我的系统centOS上检查了我的答案,新推荐:

使用 yum 安装supervisord,保留默认优先级,因为它正在被许多其他人测试

urname -r
2.6.32-573.12.1.el6.centos.plus.x86_64
Run Code Online (Sandbox Code Playgroud)

安装supervisord:

sudo yum install supervisor
supervisor.noarch 0:2.1-9.el6
Run Code Online (Sandbox Code Playgroud)

此版本的supervisord的默认优先级是:

cat /etc/init.d/supervisord |grep chkconfig
#chkconfig: - 95 04
Run Code Online (Sandbox Code Playgroud)

更改开/关而不更改supervisord

[gliang@www prima]$ chkconfig --list supervisord
supervisord     0:off   1:off   2:off   3:off   4:off   5:off   6:off
[gliang@www prima]$ sudo chkconfig --level 3 supervisord on
[gliang@www prima]$ sudo chkconfig --level 4 supervisord off
Run Code Online (Sandbox Code Playgroud)

级别 3 上的 S95 几乎具有最低优先级,晚启动,先关闭

[gliang@www prima]$ ls -ltr /etc/rc3.d/|grep supervisor
lrwxrwxrwx. 1 root root 21 Jan 29 08:02 S95supervisord -> ../init.d/supervisord
[gliang@www prima]$ ls -ltr /etc/rc4.d/|grep supervisor
lrwxrwxrwx. 1 root root 21 Jan 29 08:02 K04supervisord -> ../init.d/supervisord
Run Code Online (Sandbox Code Playgroud)

使用它来列出并查看该级别上所有守护进程的优先级

ls -ltr /etc/rc3.d/
Run Code Online (Sandbox Code Playgroud)