Linuxのランレベルは、オペレーティングシステムが実行されるさまざまな「モード」と考えることができます。これらの各モード、つまりランレベルには、オンまたはオフになっているプロセスとサービスのリストがあります。 Linuxが起動したときから、常に何らかのランレベルにあります。
このランレベルは、オペレーティングシステムがアクセスする必要のあるサービスの種類に応じて、コンピューターを使い続けるにつれて変わる可能性があります。
たとえば、グラフィカルユーザーインターフェイスを使用してLinuxマシンを実行すると、システムでコマンドラインのみを実行している場合とは異なるランレベルが必要になります。
これは、グラフィカルユーザーインターフェイスが、コマンドラインではアクセスできないさまざまなサービスにアクセスする必要があるためです。システムがどのサービスをオン(またはオフ)にする必要があるかを判断するために、必要に応じてランレベルを変更します。
Linuxランレベルの重要性
ランレベルが異なることに気付かずに、Linuxを何年も使用している可能性があります。これは、ほとんどのサーバー管理者が頻繁に構成する必要があるものではないためです。
ただし、Linuxのランレベルにより、管理者は管理するシステムをより細かく制御できます。
ランレベル内で実行されるサービスと同様に、システムが含まれるランレベルを変更できます(これについては、この記事の後半で説明します)。これにより、システムがいつでもアクセスできるサービスを完全に制御できます。
Linuxにはいくつのランレベルがありますか?
Linuxには、0から6までの7つの異なるランレベルがあります。さまざまなディストリビューションで7つのランレベルの使用方法が異なる可能性があるため、ランレベルの機能の明確なリストを作成するのは簡単ではありません。
代わりに、使用している特定のディストリビューションでランレベルがどのように機能するかを確認する必要があります。ほとんどの場合、以下のリストは、Linuxディストリビューションが一般的にランレベルを構成する方法を表しています。
ランレベル0 システムをシャットダウンします。
ランレベル1 はシングルユーザーモードであり、メンテナンスまたは管理タスクに使用されます。 ランレベルSと呼ばれるこのモードも表示される場合があります (Sはシングルユーザーを表します。)
ランレベル2 マルチユーザーモードです。このランレベルはネットワークサービスを使用しません。
ランレベル3 ネットワークを備えたマルチユーザーモードです。これは、GUI(グラフィカルユーザーインターフェイス)を起動しないシステムを使用する場合に使用する通常のランレベルです。
ランレベル4 使用されません。ユーザーは、このランレベルを自分の目的に合わせてカスタマイズできます(これについては、この記事の後半で説明します)。
ランレベル5 ランレベル3と同じですが、ディスプレイマネージャも起動します。これは、GUIを起動するシステムを使用する場合に使用しているランレベルです。
ランレベル6 システムを再起動します。
現在のランレベルはどれくらいですか?
ターミナルで「runlevel」と入力するだけで、ほとんどのディストリビューションで現在のランレベルを確認できます。
「ランレベル」コマンドを入力すると、2つの異なる番号が表示されます。最初の数値はシステムが実行していた以前のランレベルであり、2番目の数値はシステムの現在のランレベルです。
上のスクリーンショットでは、「N」は「none」の略であり、システムが以前は別のランレベルになかったことを意味します。 「5」は、システムが現在ランレベル5にあることを意味します。
この例ではCentOSを実行していますが、これはグラフィカルインターフェイスを直接起動するため、システムがランレベル5に直接移行した理由です。
現在のランレベルを変更するには?
「telinit」コマンドを使用して、システムの現在のランレベルを変更できます。たとえば、CentOSでランレベル3に変更するには、次のように入力します。
$ telinit 3
このコマンドを実行するには、rootユーザーである必要があることに注意してください。ランレベルはDebianとUbuntuで異なる動作をすることに注意してください。たとえば、UbuntuはGUIを起動しなくてもランレベル5で起動します。
上記の例に従うと、画面が空白になる場合があります。これは、–現在は空の–ttyに残っているためです。キーボードでAlt+F1(またはその他のファンクションキー)を実行するだけで、動作中の端末に移動できます。
もう一度「ランレベル」コマンドを使用すると、ランレベル3になっていることがわかります。以前のランレベルは、変更したばかりなので5と表示されます。
Linuxのsystemdターゲットとランレベル
近年、systemdは長年の「SystemVinit」(ランレベル)システムに取って代わるようになりました。基本的には同じように機能しますが、いくつかの新しいコマンドを使用し、通常は「ランレベル」を「ターゲット」と呼びます。
ランレベル0=poweroff.target(runlevel0.target)
ランレベル1=rescue.target(runlevel1.target)
ランレベル2=multi-user.target(runlevel2.target)
ランレベル3=multi-user.target(runlevel3.target)
ランレベル4=multi-user.target(runlevel4.target)
ランレベル5=graphics.target(runlevel5.target)
ランレベル6=restart.target(runlevel6.target)
このチュートリアルが進むにつれて、systemdと知っておく必要のあるコマンドについて引き続き説明します。
起動時にデフォルトのランレベルを変更するにはどうすればよいですか?
別のランレベルで起動したい理由はたくさんあります。たとえば、システム管理者はコマンドラインを起動し、必要と思われる場合にのみグラフィカルインターフェイスを起動するのが一般的です。
この機能を使用するには、デフォルトのランレベルが5ではなく3に設定されていることを確認する必要があります。
以前は、/ etc / inittabファイルを編集して、起動時にデフォルトのランレベルを定義する必要がありました。一部のディストリビューションでは、これが当てはまる場合があります。
数年間アップグレードされていないオペレーティングシステムを使用している場合でも、この方法が適切であることがわかります。
$ vi /etc/inittab
上のスクリーンショットでは、現在、ランレベル5がスタートアップのデフォルトのランレベルに設定されています。
2016年の時点で、ほとんどの主要なLinuxディストリビューションは/ etc/inittabファイルを段階的に廃止してsystemdターゲットを採用しています。違いについてはこの記事の後半で説明します。
システムに/etc/ inittabファイルがまったくない場合や、CentOSシステムのこのスクリーンショットのように、inittabファイルで代わりにsystemdを使用するようにアドバイスされている場合があります。
システムの現在のデフォルトターゲットを確認するには:
$ systemctl get-default
上のスクリーンショットでは、システムからの返信は「graphical.target」です。ご想像のとおり、これはランレベル5と同等です。
他の利用可能なターゲットとそれらが関連付けられているランレベルを確認するには、次のように入力します。
$ ls -l /lib/systemd/system/runlevel*
これらのシンボリックリンクは、systemdターゲットがランレベルとほぼ同じように動作することを示しています。では、起動時にデフォルトのランレベル(またはターゲット)を変更するにはどうすればよいですか?次のような新しいシンボリックリンクを作成する必要があります:
$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
このコマンドはデフォルトのランレベルを3に変更するため、次に再起動すると、システムは5ではなくランレベル3になります。別のランレベルが必要な場合は、の「3」の代わりに別の番号を使用します。コマンド。
参考までに、そのコマンドの-fスイッチは、新しいリンクを作成する前にターゲットファイルを削除する必要があることを示しています。単純なrmコマンドで最初に削除することもできます。
「systemctlget-default」コマンドを再度使用して、変更が正常に行われたことを確認できます。
ランレベル3とランレベル5
あなたが耳にし、最も多く使用する2つのランレベルは3と5になります。基本的にはこれに要約されます。ランレベル3はコマンドラインであり、ランレベル5はグラフィカルユーザーインターフェイスです。
もちろん、すべてのディストリビューションがこの規則に従っているわけではなく、管理者がシステムを構成して、これらのランレベルにさらに大きな違いを持たせることができます。
しかし、一般的には、それがどのように機能するかです。これらの両方のランレベルで有効になっているサービスを確認したい場合は、次のセクションで説明します。
特定のランレベルで有効になっているサービスを一覧表示する
近年まで、「chkconfig –list」は、さまざまなランレベルで有効になるサービスを一覧表示するコマンドでした。オペレーティングシステムが最新の場合、そのコマンドでエラーが発生したり、systemdに移行したりする可能性があります。
グラフィカルモード(ランレベル5)で起動したときにどのサービスが開始されるかを確認したい場合は、次のコマンドを実行できます。
$ systemctl list-dependencies graphical.target
他のランレベルでデフォルトで実行されるサービスを表示するには、「graphical.target」を表示する必要のあるターゲットの名前に置き換えるだけです。
プロセスはどのランレベルで実行されますか?
特定のサービスが実行されているランレベルを確認するには、次のコマンドを使用できます。
$ systemctl show -p WantedBy [name of service]
たとえば、SSHデーモンが実行されるランレベルを確認したい場合は、次のように入力します。
$ systemctl show -p WantedBy sshd.service
上のスクリーンショットの出力によると、SSHサービスはランレベル2、3、および4(multi-user.target)で開始されます
アプリケーションのランレベルを変更するにはどうすればよいですか?
上記のように、SSHサービスはランレベル2〜4(multi-user.target)でのみ実行されています。グラフィカルインターフェイス(ランレベル5(graphical.target))を起動したときにも起動したい場合はどうなりますか?次のコマンドを使用して、その構成を適用できます。
$ systemctl enable sshd.service
Linuxのランレベルに関するセキュリティの問題
この記事の前半で述べたように、Linuxランレベルのポイントは、特定の条件下で実行されるサービスを管理者が制御できるようにすることです。この種のシステムをきめ細かく制御することで、無関係なサービスが実行されていないことを確認できるため、セキュリティが強化されます。
この問題は、管理者が実行中のサービスを正確に認識していない場合に発生する可能性があるため、これらの攻撃対象領域を保護する必要はありません。
このガイドのメソッドを使用して、デフォルトのランレベルを構成し、実行中のアプリケーションを制御できます。これらの方法により、システムリソースが解放されるだけでなく、サーバーの安全性も高まります。
必要なランレベルのみを使用することを忘れないでください。たとえば、ターミナルの使用のみを計画している場合、ランレベル5(グラフィカルインターフェイス)を開始しても意味がありません。
別のランレベルに変更すると、複数の新しいサービスが導入され、そのうちのいくつかは完全にバックグラウンドで実行される可能性があり、それらを保護するのを忘れる可能性があります。
私に最適なランレベルはどれですか?
どのランレベルがあなたにとって最適であるかを決定することは、状況に依存します。通常、ランレベル3と5を定期的に使用することになります。
コマンドラインに慣れていて、グラフィカルインターフェイスが必要ない場合は、ランレベル3(ほとんどのディストリビューション)が最適です。
これにより、不要なサービスが実行されなくなります。一方、さまざまなアプリなどを使用するために、より多くのデスクトップエクスペリエンスとグラフィカルインターフェイスが必要な場合は、ランレベル5が推奨されるランレベルになります。
本番サーバーでメンテナンスを実行する必要がある場合は、ランレベル1がその状況に適しています。このランレベルを使用して、サーバー上で自分だけであることを確認し(ネットワークサービスも開始されていない)、中断することなくメンテナンスを実行できます。
まれに、ランレベル4を使用する必要がある場合もあります。これは、ユーザーまたはシステム管理者がカスタム構成されたランレベルを持っている特定の状況でのみ発生します。これを行う方法については、次のセクションで説明します。
おそらくお察しのとおり、ランレベル0または6でシステムを実行することはありません(また、実行することもできません)が、再起動または電源オフするためだけにシステムを切り替えることは可能です。私たちのためにそれを行う他のコマンドがあるので、そうすることは通常必要ではないはずです。
Linuxで新しいランレベルを作成できますか?
Linuxで新しいランレベルを作成することは可能ですが、それが必要になる可能性はほとんどありません。とにかくそれを行うことにした場合は、既存のsystemdターゲットの1つをコピーしてから、独自のカスタマイズで編集することから始めることができます。
ターゲットは次の場所にあります:
/usr/lib/systemd/system
新しいランレベル/ターゲットをgraphical.target(ランレベル5)に基づいて作成する場合は、そのディレクトリを新しいターゲットディレクトリにコピーします。
$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target
その後、次のように新しい「wants」ディレクトリを作成します。
$ mkdir /etc/systemd/system/mynew.target.wants
次に、新しいランレベルで有効にする/ usr / lib / systemd/systemの追加サービスをシンボリックリンクします。
チュートリアルがお役に立てば幸いです。戻ってきてください。