Linux init コマンド
init コマンドとは
initLinuxシステムの中で最も重要なプロセスの一つであり、システム起動後にカーネルによって作成される最初のユーザー空間プロセス(PID=1)です。システム内の他のすべてのプロセスの起動と管理を担当します。
主な特徴
- プロセス管理:すべてのプロセスの親プロセスとして
- ランレベル制御:システムの異なる実行状態を管理
- サービス管理:システムサービスの起動と停止
- システム初期化:起動スクリプトと設定の実行
init コマンドの基本構文
init [运行级别]
ランレベルの説明
Linuxシステムは7つの標準ランレベルを定義しています:
| ランレベル | 説明 | 典型的な用途 |
|---|---|---|
| 0 | シャットダウン | システムのシャットダウン状態 |
| 1 | シングルユーザーモード | システムメンテナンス/root権限 |
| 2 | マルチユーザーモード(NFSなし) | 基本マルチユーザーモード |
| 3 | 完全なマルチユーザーモード | 標準のコマンドラインインターフェース |
| 4 | 予約 | ユーザー定義 |
| 5 | グラフィカルインターフェースモード | GUI付きマルチユーザーモード |
| 6 | 再起動 | システムの再起動 |
init コマンドの実際の使い方
1. 現在のランレベルを確認する
例
who -r
# または
runlevel
# または
runlevel
2. ランレベルの切り替え
例
init 3 # マルチユーザーコマンドラインモードに切り替え
init 5 # グラフィカルインターフェースモードに切り替え
init 0 # シャットダウン
init 6 # システムを再起動
init 5 # グラフィカルインターフェースモードに切り替え
init 0 # シャットダウン
init 6 # システムを再起動
3. 緊急時の対応
例
init 1 # シングルユーザーメンテナンスモードに入る(root権限が必要)
現代Linuxシステムにおけるinitの変遷
1. System V init
従来の初期化システム。/etc/inittab設定ファイルを使用
例
# 典型的なinittabエントリの例
id:3:initdefault: # デフォルトのランレベル
si::sysinit:/etc/rc.d/rc.sysinit # システム初期化スクリプト
id:3:initdefault: # デフォルトのランレベル
si::sysinit:/etc/rc.d/rc.sysinit # システム初期化スクリプト
2. Upstart(Ubuntuの初期バージョンで使用)
イベント駆動型のinitシステム
3. systemd(現代の主流ディストリビューション)
例
systemctl isolate multi-user.target # init 3に相当
systemctl isolate graphical.target # init 5に相当
systemctl isolate graphical.target # init 5に相当
実践演習
演習1:ランレベル切り替え実験
グラフィカルインターフェースからコマンドラインモードに切り替える
init 3
サービスの変化を確認した後、グラフィカルインターフェースに戻す
init 5
演習2:システムメンテナンスモード体験
シングルユーザーモードに入る
init 1
ファイルシステムチェックを実行する
fsck /dev/sda1
注意事項
- 権限要件:initコマンドは通常root権限が必要です
- 慎重に使用:init 0やinit 6を直接使用すると、保存されていないデータが失われる可能性があります
- システムの違い:ディストリビューションによって異なるinit実装がある場合があります
- サービスへの影響:ランレベルを切り替えると、関連サービスが停止/起動されます
よくある質問と回答
Q:システムに/etc/inittabファイルがないのはなぜですか?
A:systemdを使用するシステムではinittabは不要になり、設定方法が変更されました
Q:デフォルトのランレベルを設定するにはどうすればよいですか?
systemdシステムの場合:
systemctl set-default multi-user.target # 相当于运行级别3
Q:initコマンドとshutdownコマンドの違いは何ですか?
どちらも最終的にはシャットダウンしますが、shutdownには遅延シャットダウンやブロードキャスト通知などのより多くのオプションがあります
Linux コマンド大全