本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「init」コマンドと「systemctl」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、CUI(Character User Interface)/GUI(Graphical User Interface)などのシステムモードの切り替えに使える「init」コマンドと「systemctl」コマンドです。
initコマンドの概要 | initコマンドの書式 | initコマンドのオプション | systemctlコマンドの概要 | systemctlコマンドの書式 | systemctlコマンドのオプション
initは全てのプロセスの“親”となるコマンドで、プロセスを制御する他、OS全体の動作モードを示す「ランレベル」を変更することができます。Linuxカーネルはメモリに読み込まれるとデバイスなどのチェックを行い、initを起動します。initは「/etc/inittab」に従いさまざまなプロセスを起動します。
init ランレベル(0〜6で指定)
※管理者権限で実行する必要があります
ランレベル | 動作モード |
---|---|
0 | halt(停止) |
1 | シングルユーザーモード |
2〜5 | マルチユーザーモード |
6 | reboot(再起動) |
ランレベル「2」〜「5」が通常の起動モードで、システム設定によってネットワークの有無を切り替えたり、X Window Systemを使用するかどうか(GUIにするかどうか)を切り替えたりします。
initコマンドのオプションは次の通りです。
オプション | 意味 |
---|---|
-t 秒数 | 実際に動作を始めるまで(シグナルを送るまで)の時間を指定 |
※実際に動作しているのがsystemdの場合、このオプションは使用できません |
昨今のLinuxでは、initに代わって「systemd」というシステムが導入されています。systemdシステムでは、各種サービスを「ユニット」単位で管理することができます。ここで使われているがsystemctlコマンドです。
従来は“initコマンドでランレベルを変更”のように知られていた操作も、現在は「シンボリックリンク」として残っているのみで、実際にはsystemctlコマンドが使われています。
また、従来は「reboot」コマンドや「shutdown」コマンドで実行していた再起動/シャットダウン操作も、現在はsystemctlコマンドが使用されています([参考]rebootコマンドとpoweroffコマンドの実体)。
コマンド(動作モード関連) | 内容 |
---|---|
get-default ターゲット | デフォルトのモードを確認する |
set-default ターゲット | デフォルトのモードを変更する |
isolate ターゲット | 現在のモードを変更する |
default | デフォルトのモードにする |
rescue | レスキューモードに入る |
emergency | 緊急モードに入る |
halt | シャットダウンして終了する |
poweroff | シャットダウンして電源オフ |
reboot | シャットダウンして再起動する |
suspend,hibernate,hybrid-sleep | 休止モードに入る |
systemctlコマンドのオプションは次の通りです。
オプション | 意味 |
---|---|
--no-wall | 他のモードに入る際にログイン中の他のユーザーにメッセージを表示しない |
CentOS(Red Hat系システム)の場合は、initコマンドでCUI/GUIの動作モードを切り替えることができます。
init 3:CUIモードにする
init 5:GUIモードにする
(即座に切り替わるので実行画面はありません。管理者権限で実行する必要があります)
なお、GNOME環境など、GUI用のソフトウェアがインストールされていない場合は、「init 5」コマンドを実行してもグラフィカルモードには切り替わりません。
また、UbuntuでGUI環境からCUI環境に切り替えたい場合は、[Ctrl]+[Alt]+[F1](F1〜F6)キーを使うとよいでしょう。[Ctrl]+[Alt]+ファンクションキーは、仮想コンソールを切り替えるためのキー操作になります。[Ctrl]+[Alt]+[F7]キーで元のモードに戻ることができます。
systemctlコマンドは「systemctl コマンド」という実行スタイルで、システム関連のさまざまな操作を行います。現在の動作モードを切り替える場合は、「isolate」コマンドを使います。
動作モードはinitコマンドのランレベルのような数字ではなく、“ターゲット”で表します。CUI環境はいわば複数ユーザーでログインできる通常モードということで「multi-user.target」、GUI環境は「graphical.target」という名前が付いています。
systemctl isolate multi-user.target:CUIモードにする
systemctl isolate graphical.target:GUIモードにする
systemctl default:デフォルトのモード(起動時のモード)にする
(管理者権限で実行する必要があります)
コマンド(ターゲット) | 動作モード |
---|---|
rescue.target | レスキューモード |
emergency.target | 緊急モード |
multi-user.target | CUIモード |
graphical.target | GUIモード |
システム起動時の動作モードを変更したい場合は、「set-default」コマンドを使用します。また、現在の設定は「get-default」コマンドを使い、「systemctl get-default」で確認することができます(画面1)。
systemctl get-default:デフォルトのモード(起動時のモード)にする
systemctl set-default multi-user.target:デフォルトをCUIモードにする
systemctl set-default graphical.target:デフォルトをGUIモードにする
(set-defaultは管理者権限で実行する必要があります)
「レスキューモード」は、どうしても終了しないプロセスがあるなどの状況でシステムを修復する場合に使うモードです。「シングルユーザーモード(init 1)」とほぼ同等ですが、システムの設定によってはネットワークシステムを使う、使わないなどの違いがあるかもしれません。
systemctl rescue
(管理者権限で実行する必要があります)
レスキューモードにも入れない場合は、「緊急モード」を使用します。
systemctl emergency
(管理者権限で実行する必要があります)
それぞれ、レスキューモードの「systemctl isolate rescue.target」、緊急モードの「systemctl isolate emergency.target」とほぼ同じ動作ですが、isolateコマンドを使う場合と異なり、ログインしている他のユーザーに対し「The system is going down to rescue mode NOW!」などのメッセージを送信します。
systemctlコマンドでは「systemctl isolate runlevel3.target」のように、initで使用されていたランレベルでも実行できるようになっています。それぞれシンボリックリンクとなっており、各ターゲットとの対応は「ls」コマンドで確認できます(画面2)。
ls -l /usr/lib/systemd/system/runlevel*.target
他にもたくさんあるので、興味がある方は「ls -l /usr/lib/systemd/system/*.target」で表示して見ると面白いかもしれません。
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.