システムにランレベル3に移動するように指示した場合、まずランレベル0、1、2を実行し、最後にランレベル3を実行することを意味しますか?
私はこの質問に対する答えが「はい」と思います。しかし、RHEL 6システムを見ると、多くのrcX.dディレクトリに同じシンボリックリンクが含まれていることがわかりました。
私の/etc/rc.d/rc0.d/
[root@centos6 rc.d]# ls -lah /etc/rc.d/rc0.d/
total 8.0K
drwxr-xr-x. 2 root root 4.0K Jun 27 11:59 .
drwxr-xr-x. 10 root root 4.0K Jul 9 15:06 ..
lrwxrwxrwx. 1 root root 13 Jun 12 13:02 K05atd -> ../init.d/atd
lrwxrwxrwx. 1 root root 14 Jun 12 13:01 K10cups -> ../init.d/cups
lrwxrwxrwx. 1 root root 19 Jun 12 10:57 K10saslauthd -> ../init.d/saslauthd
lrwxrwxrwx. 1 root root 18 Jun 12 12:51 K15svnserve -> ../init.d/svnserve
lrwxrwxrwx. 1 root root 14 Jun 12 10:58 K25sshd -> ../init.d/sshd
lrwxrwxrwx. 1 root root 17 Jun 12 10:57 K30postfix -> ../init.d/postfix
lrwxrwxrwx. 1 root root 17 Jun 12 12:26 K50dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx. 1 root root 20 Jun 12 10:57 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 15 Jun 12 10:57 K60crond -> ../init.d/crond
lrwxrwxrwx. 1 root root 25 Jun 27 11:59 K65vboxadd-service -> ../init.d/vboxadd-service
lrwxrwxrwx. 1 root root 17 Jun 27 11:58 K70vboxadd -> ../init.d/vboxadd
lrwxrwxrwx. 1 root root 21 Jun 27 11:59 K70vboxadd-x11 -> ../init.d/vboxadd-x11
lrwxrwxrwx. 1 root root 17 Jun 12 12:26 K73winbind -> ../init.d/winbind
lrwxrwxrwx. 1 root root 19 Jun 12 12:26 K74haldaemon -> ../init.d/haldaemon
lrwxrwxrwx. 1 root root 26 Jun 12 10:58 K75blk-availability -> ../init.d/blk-availability
lrwxrwxrwx. 1 root root 15 Jun 12 11:15 K75netfs -> ../init.d/netfs
lrwxrwxrwx. 1 root root 19 Jun 12 10:57 K75udev-post -> ../init.d/udev-post
lrwxrwxrwx. 1 root root 24 Jun 12 12:26 K84NetworkManager -> ../init.d/NetworkManager
lrwxrwxrwx. 1 root root 24 Jun 27 11:59 K84wpa_supplicant -> ../init.d/wpa_supplicant
lrwxrwxrwx. 1 root root 19 Jun 12 10:58 K85mdmonitor -> ../init.d/mdmonitor
lrwxrwxrwx. 1 root root 20 Jun 12 12:25 K85messagebus -> ../init.d/messagebus
lrwxrwxrwx. 1 root root 20 Jun 12 10:58 K87multipathd -> ../init.d/multipathd
lrwxrwxrwx. 1 root root 21 Jun 12 10:57 K87restorecond -> ../init.d/restorecond
lrwxrwxrwx. 1 root root 16 Jun 12 10:58 K88auditd -> ../init.d/auditd
lrwxrwxrwx. 1 root root 15 Jun 27 11:59 K88iscsi -> ../init.d/iscsi
lrwxrwxrwx. 1 root root 17 Jun 12 10:57 K88rsyslog -> ../init.d/rsyslog
lrwxrwxrwx. 1 root root 16 Jun 12 10:58 K89iscsid -> ../init.d/iscsid
lrwxrwxrwx. 1 root root 21 Jun 12 13:01 K89portreserve -> ../init.d/portreserve
lrwxrwxrwx. 1 root root 15 Jun 12 11:15 K89rdisc -> ../init.d/rdisc
lrwxrwxrwx. 1 root root 17 Jun 12 11:15 K90network -> ../init.d/network
lrwxrwxrwx. 1 root root 19 Jun 12 10:57 K92ip6tables -> ../init.d/ip6tables
lrwxrwxrwx. 1 root root 18 Jun 12 10:57 K92iptables -> ../init.d/iptables
lrwxrwxrwx. 1 root root 22 Jun 12 10:58 K99lvm2-monitor -> ../init.d/lvm2-monitor
lrwxrwxrwx. 1 root root 17 Jun 12 11:15 S00killall -> ../init.d/killall
lrwxrwxrwx. 1 root root 14 Jun 12 11:15 S01halt -> ../init.d/halt
lrwxrwxrwx. 1 root root 15 Jun 26 12:32 S95jexec -> ../init.d/jexec
そして/etc/rc.d/rc1.d/rc0.d と同じシンボリックリンクセットと追加リンクが表示されます。これは rc0.d と rc1.d ディレクトリが別個であることを示し、ランレベル 1 に入るためにはランレベル 0 の内容を実行しないようです。これは、rc0のシンボリックリンクが変更された場合、dがrc1.dから完全にコピーされないことを意味します。
それでは、正確にどのように機能しますか?特定のrc.Xディレクトリまたはinitに渡されたrcレベルより低いレベルで実行されているすべてのrc.Xディレクトリのファイルを検索しますか?
[root@centos6 rc.d]# ls -lah /etc/rc.d/rc1.d/
total 8.0K
drwxr-xr-x. 2 root root 4.0K Jun 27 11:59 .
drwxr-xr-x. 10 root root 4.0K Jul 9 15:06 ..
lrwxrwxrwx. 1 root root 13 Jun 12 13:02 K05atd -> ../init.d/atd
lrwxrwxrwx. 1 root root 14 Jun 12 13:01 K10cups -> ../init.d/cups
lrwxrwxrwx. 1 root root 19 Jun 12 10:57 K10saslauthd -> ../init.d/saslauthd
lrwxrwxrwx. 1 root root 18 Jun 12 12:51 K15svnserve -> ../init.d/svnserve
lrwxrwxrwx. 1 root root 14 Jun 12 10:58 K25sshd -> ../init.d/sshd
lrwxrwxrwx. 1 root root 17 Jun 12 10:57 K30postfix -> ../init.d/postfix
lrwxrwxrwx. 1 root root 17 Jun 12 12:26 K50dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx. 1 root root 20 Jun 12 10:57 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 15 Jun 12 10:57 K60crond -> ../init.d/crond
lrwxrwxrwx. 1 root root 25 Jun 27 11:59 K65vboxadd-service -> ../init.d/vboxadd-service
lrwxrwxrwx. 1 root root 17 Jun 27 11:58 K70vboxadd -> ../init.d/vboxadd
lrwxrwxrwx. 1 root root 21 Jun 27 11:59 K70vboxadd-x11 -> ../init.d/vboxadd-x11
lrwxrwxrwx. 1 root root 17 Jun 12 12:26 K73winbind -> ../init.d/winbind
lrwxrwxrwx. 1 root root 19 Jun 12 12:26 K74haldaemon -> ../init.d/haldaemon
lrwxrwxrwx. 1 root root 15 Jun 12 11:15 K75netfs -> ../init.d/netfs
lrwxrwxrwx. 1 root root 24 Jun 12 12:26 K84NetworkManager -> ../init.d/NetworkManager
lrwxrwxrwx. 1 root root 24 Jun 27 11:59 K84wpa_supplicant -> ../init.d/wpa_supplicant
lrwxrwxrwx. 1 root root 19 Jun 12 10:58 K85mdmonitor -> ../init.d/mdmonitor
lrwxrwxrwx. 1 root root 20 Jun 12 12:25 K85messagebus -> ../init.d/messagebus
lrwxrwxrwx. 1 root root 20 Jun 12 10:58 K87multipathd -> ../init.d/multipathd
lrwxrwxrwx. 1 root root 21 Jun 12 10:57 K87restorecond -> ../init.d/restorecond
lrwxrwxrwx. 1 root root 16 Jun 12 10:58 K88auditd -> ../init.d/auditd
lrwxrwxrwx. 1 root root 15 Jun 27 11:59 K88iscsi -> ../init.d/iscsi
lrwxrwxrwx. 1 root root 17 Jun 12 10:57 K88rsyslog -> ../init.d/rsyslog
lrwxrwxrwx. 1 root root 16 Jun 12 10:58 K89iscsid -> ../init.d/iscsid
lrwxrwxrwx. 1 root root 21 Jun 12 13:01 K89portreserve -> ../init.d/portreserve
lrwxrwxrwx. 1 root root 15 Jun 12 11:15 K89rdisc -> ../init.d/rdisc
lrwxrwxrwx. 1 root root 17 Jun 12 11:15 K90network -> ../init.d/network
lrwxrwxrwx. 1 root root 19 Jun 12 10:57 K92ip6tables -> ../init.d/ip6tables
lrwxrwxrwx. 1 root root 18 Jun 12 10:57 K92iptables -> ../init.d/iptables
lrwxrwxrwx. 1 root root 22 Jun 12 10:58 S02lvm2-monitor -> ../init.d/lvm2-monitor
lrwxrwxrwx. 1 root root 26 Jun 12 10:58 S25blk-availability -> ../init.d/blk-availability
lrwxrwxrwx. 1 root root 19 Jun 12 10:57 S26udev-post -> ../init.d/udev-post
lrwxrwxrwx. 1 root root 15 Jun 26 12:32 S95jexec -> ../init.d/jexec
lrwxrwxrwx. 1 root root 16 Jun 12 11:15 S99single -> ../init.d/single
答え1
システムにランレベル3に移動するように指示した場合、まずランレベル0、1、2を実行し、最後にランレベル3を実行することを意味しますか?
いいえ、そうではありません。このように、ランレベルは連続的ではありません。
イラスト:実行レベル0通常、すべてのサービスを停止し、最終的にシステムを停止(終了する可能性があります)する「終了」実行レベルです。完全に動作するシステムを得るために、initが最初に実行レベル0に入ったならば、それはうまくいかないでしょう。
つまり、通常ㅏ進展この期間中起動プロセス。カーネルはランレベル1で初期化され、次に制御をinitに渡します。 initは通常、ランレベル2(ネットワーキングのないマルチユーザー)、次にランレベル3(完全に動作するテキストモード)、および可能であればランレベル5(完全に動作するグラフィックモード)に入るように構成されます。 )。しかし、これは実際には完全に設定可能であり、どのランレベルに入るかについての詳細はほとんど慣習に従います。たとえば、少なくとも過去には、Debianは完全な動作グラフィックモードにランレベル4を使用していましたが、私のDebian Wheezyではランレベル2と3が同じように見えます(diff <(ls /etc/rc2.d) <(ls /etc/rc3.d)
何も出力されません)。各実行レベルに対応する内容は管理者が決定する。
さらに、通常、実行レベル 6 はシステムを再起動するように設定されます。特に、オペレーティングシステムが正しく起動しない場合は、システムメンテナンス中に実行レベル1から実行レベル6に直接移動できます。
Linux以外のシステムでは、さまざまなランレベルの目的について異なる考え方を持っているか、使用可能なランレベルの数が異なる可能性があることにも注目する価値があります。この概念は* nixの世界ではほとんど普遍的ですが、実装と実際の使用は非常に多様です。
全体として、「ランレベル」は、関連するプロセスとシステムの状態を管理者が選択できる管理可能なパッケージにグループ化する便利な方法です。 (BTW、Windows緊急安全モード、ネットワーク緊急安全、コマンドプロンプト緊急安全、通常起動などは非常に似た概念を持っています。)
答え2
ランレベルを切り替えると実行される唯一のことは/etc/rc.d/rc${NEW_LEVEL}.d/
。
これはあなたが正しいことを意味します:すべて rc*.d
ディレクトリーは以下を処理できる必要があります。みんな他のランレベルから切り替えると、プロセス/サービスが変わります。したがって、各rcディレクトリには、その実行レベルに達するための完全なスクリプトセットが含まれています。
ランレベル3に切り替えたいとしましょう。/etc/rc.d/rc3.d/K*
スクリプトは、前のランレベルで実行されていたすべてのプロセス(数値制限なし)を終了しようとし、/etc/rc.d/rc3.d/S*
開始する必要がある(そして前のランレベル以降に開始されなかった)すべてのプロセスを開始します。
明らかに、これらすべてのシンボリックリンクを管理するのは本当に難しいので、これを管理するのに役立ついくつかのユーティリティがあります。 DebianとUbuntu(少なくとも他の場合でも)では、 を使ってupdate-rc.d
にあるスクリプトを選択的に有効/無効にし/etc/init.d
たり、スクリプトごとに「デフォルト」または推奨設定に設定したりできます。これにより、実装したい構成の変更を反映するために、すべてのシンボリックリンクが作成され更新されます。 CentOSでは、同じ操作を使用または実行できるntsysv
ことがわかります。chkconfig
実際にはいいえ/etc/rc*.d/
ファイルを直接タッチしたり(または)変更したりするには、常に対応する/etc/rc.d/rc*.d/
ツール(たとえば、、update-rc.d
)ntsysv
を使用します。chkconfig