web-dev-qa-db-ja.com

PUIAS(RedHat)6.4での起動中にデーモンが起動しない

PUIAS(RedHat)6.4サーバーとデスクトップがたくさんあります。コンピューティングノードを再起動した後(テスト目的でのみ実行)、初期インストール後に手動で開始されたデーモン(ipmi、mcelog、fail2ban)の多くが実行されておらず、手動で再起動する必要があることに気付きました。このサーバーは、実行レベル3(GUIなし)で実行することを想定しています。デスクトップ上の同じOSバージョン(実行レベル5)で同様の演習を行うと、まったく異なる結果が得られます。つまり、すべてのデーモンが適切に起動されます。

これは例外であり、/ etc/init.dスクリプトを編集する必要がありますか、それともサービスを開始するものを書くだけですか?これを行う他の「正しい」方法はありますか?

私はOpenBSDの世界から来ており、ビルドインデーモンは/etc/rc.conf.localを編集することで簡単に見つめられ、他のすべてのデーモンは/etc/rc.localを編集することで開始されます。

2

(私は衒学者になろうとはしていません。あなたがどれだけ知っているか、知らないかわからないので、基本的にここでブレインダンプしています)

まず、RedHatがデフォルトでインストールして有効にする奇妙なものを選択することに注意してください。たとえば、avahiをインストールし、起動時に起動できるようにするのはRHEL5またはRHEL6のいずれかです。どちらのバージョンも、選択できるほぼすべてのインストールプロファイルに対してカップをインストールして有効にすると思います。 RHEL6は、デフォルトではmanなどをインストールしません。

RHELでは、サービスを管理する方法が3つあります。

  • /etc/rc.dまたは/etc/rcX.dの下のシンボリックリンクを手動で変更します
  • chkconfigを使用します(同じ名前のIRIXのツールをモデルにしています)
  • setupパッケージが提供するsetuptoolコマンドを使用します(初期インストール時に選択したプロファイルに応じて、インストールされる場合とされない場合があります)。

それぞれの詳細:

手動管理:

したがって、RHEL/SystemVの起動シーケンスは次のとおりです。

  1. /etc/rc.sysinitが実行され、重要なファイルシステムなど、オペレーティングシステムの重要な部分のほとんどが配置されます。

  2. 次に、init/etc/rcX.d(起動するランレベルのX)を調べ、そこに含まれるすべてのファイル/シンボリックリンクを(アルファベット順に)実行します。

    • 名前がSで始まる場合、スクリプトstartargv[1]/$1として指定します。

    • それらの名前がKで始まる場合、サービスを停止(またはkills)します。

    • 慣例では、依存関係はKまたはSの後の番号を変更することで処理され、アルファベット順の位置を変更するだけの効果があります。

  3. /etc/rc.localにあるものは何でも実行します


実際のサービススクリプトは/etc/rc.d/init.dにあります(これは/etc/init.dにもシンボリックリンクされています)。サービスを実行レベル3(ネットワークでGUIなし)で開始する場合は、次のようにします。

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

chkconfigを使用

chkconfigの目的は、基本的に上記のプロセスを自動化することです。 chkconfigでサービスを管理する前に、initscriptに特定のヘッダーが必要であるという欠点があります。たとえば、これはネットワーキングサービスの開始です。

#! /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は、実行レベル3から5に対してauditdサービスを有効にします。

それを望まない場合は、--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

setuptoolを使用

setupは、システム管理の最新のイテレーションであり、一般的な管理タスクを少し簡単にするように設計されています。 Red Hatがそれを行うために必要なすべてをインストールする場合、それはそのように機能します。しかし、RHEL6以降、いくつかのパッケージ間でsetuptool機能が分離されました(メニューを詰まらせることなく、より包括的にすることができると思います)。

これは、特定の実行レベルを特定できないことを除けば、chkconfigのかなり自明なncursesベースのラッパーです。

Initial screen

Actual Management Screen

それを超えてそれについて言うことはあまりありません。

それがあなたの質問に答えたかどうか私に知らせてください。

3
Bratchley