在 PUIAS (RedHat) 6.4 上引导期间守护进程未启动

在 PUIAS (RedHat) 6.4 上引导期间守护进程未启动

我有一堆 PUIAS (RedHat) 6.4 服务器和桌面。我注意到在重新启动我的计算节点(仅用于测试目的)后,许多在初始安装后手动启动的守护进程(ipmi、mcelog、fail2ban)没有运行,必须手动重新启动。该服务器假定在运行级别 3 上运行(无 GUI)。在桌面上的相同操作系统版本(运行级别 5)上执行类似的操作会产生完全不同的结果。即所有守护进程都正确启动。

这是例外吗?我应该编辑 /etc/init.d 脚本还是只编写我的脚本来启动服务?还有其他“正确”的方法吗?

我来自 OpenBSD 世界,其中构建的守护进程只需通过编辑 /etc/rc.conf.local 来启动,所有其他守护进程都通过编辑 /etc/rc.local 来启动。

答案1

(我并不是想迂腐,我只是不知道你知道多少或不知道多少,所以我基本上在这里脑残)

首先,请注意红帽默认会选择一些奇怪的东西来安装和启用。例如,将安装 RHEL5 或 RHEL6阿瓦希并使其在启动时启动。我认为这两个版本都会为您可以选择的几乎所有安装配置文件安装并启用cups。 RHEL6默认不安装man等等。

在 RHEL 上,您可以通过三种方式管理服务:

  • 手动修改下面的符号链接/etc/rc.d/etc/rcX.d
  • 使用chkconfig(仿照 IRIX 的同名工具)
  • 使用软件包setup提供的命令setuptool(可能会也可能不会安装,具体取决于初始安装期间选择的配置文件)。

每个的更多详细信息:

手动管理:

RHEL/System V 启动顺序如下:

  1. /etc/rc.sysinit运行,它使操作系统的大部分关键部分(例如关键文件系统)就位。

  2. init然后查看/etc/rcX.d(其中 X 表示启动的运行级别)并执行其中包含的所有文件/符号链接(按字母顺序排列)。

    • 如果他们的名字以 and 开头,S则将脚本start作为argv[1]/$1

    • 如果他们的名字以 a 开头,K则会停止(或kills)服务。

    • K按照惯例,依赖关系是通过更改或后面的数字来处理的,S这仅具有更改其字母顺序位置的效果。

  3. 它执行里面的任何内容/etc/rc.local


实际的服务脚本将位于/etc/rc.d/init.d(也符号链接到 on /etc/init.d)。如果您希望服务在运行级别 3(网络但无 GUI)启动,您可以这样做:

# cd /etc/rc3.d
# ln -s /etc/init.d/myService S99myService

使用 chkconfig

的目的chkconfig基本上是为您自动化上述过程。它的缺点是要求 initscripts 具有特定的标头,然后才能使用chkconfig.例如,这是网络服务的启动:

#! /bin/bash
#
# network       Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
#              start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
### END INIT INFO

这可以启用chkconfig并找出需要设置/修改的数字才能使依赖关系正常工作。你失去了改变顺序的能力,但由于上述原因,它实际上并不重要。

chkconfig更容易,坦率地说,这是我大部分时间使用的。

您可以通过以下方式检查哪些服务在哪些运行级别配置chkconfig --list

[root@ditirlns01 ~]# chkconfig --list | head
NetworkManager  0:off 1:off 2:off  3:off  4:off 5:off  6:off
acpid           0:off 1:off 2:on 3:on   4:on   5:on 6:off
anacron         0:off 1:off 2:on 3:on   4:on   5:on 6:off
arptables_jf    0:off 1:off 2:on 3:on   4:on   5:on 6:off
atd             0:off 1:off 2:off  3:off  4:on 5:on 6:off
auditd          0:off 1:off 2:off  3:off  4:off 5:off  6:off
autofs          0:off 1:off 2:off  3:off  4:on 5:on 6:off
avahi-daemon    0:off 1:off 2:off  3:off  4:on 5:on 6:off
avahi-dnsconfd  0:off 1:off 2:off  3:off  4:off 5:off  6:off
capi            0:off 1:off 2:off  3:off  4:off 5:off  6:off

或者检查特定服务的状态:

[root@ditirlns01 ~]# chkconfig --list auditd
auditd          0:off 1:off 2:off  3:off  4:off 5:off  6:off

chkconfig <serviceName> on您可以通过继续上面的示例来启用服务:

[root@ditirlns01 ~]# chkconfig auditd on
[root@ditirlns01 ~]# chkconfig --list auditd
auditd          0:off 1:off 2:on 3:on   4:on   5:on 6:off

如您所见,chkconfig启用auditd运行级别 3 到 5 的服务。

如果您不希望这样,可以使用该--levels选项来设置特定的运行级别以启用:

[root@ditirlns01 ~]# chkconfig auditd off
[root@ditirlns01 ~]# chkconfig auditd on --levels=3
[root@ditirlns01 ~]# chkconfig --list auditd
auditd          0:off 1:off 2:off  3:on 4:off  5:off   6:off

使用安装工具

setup是系统管理的最新版本,旨在使常见的管理任务变得更加容易。如果红帽能够安装实现这一目标所需的一切,那么它就会以这种方式工作。但从 RHEL6 开始,他们将setuptool功能分离到几个软件包中(我想是为了使其更全面,而不堵塞菜单)。

这是一个非常不言自明的基于 ncurses 的包装器,chkconfig只是它不允许您挑选出特定的运行级别:

初始画面

实际管理画面

除此之外,没什么好说的。

如果这回答了您的问题,请告诉我。

相关内容