2.4. Systemd
2.4.1. Systemdの概要
Systemdのシステムではinitの代わりにsystemdプロセスが起動し各サービスの管理を行う。またSystemdは処理を分割して並列化することでシステム起動処理を高速化している。具体的には以下のような複数のデーモンプロセスが連携して動作する
| プロセス | 説明 | 
|---|---|
| systemd | systemdを統括するメインプロセス | 
| systemd-journald | ジャーナル管理、ログ管理 | 
| systemd-logind | ログイン処理 | 
| systemd-networkd | ネットワーク管理 | 
| systemd-timesyncd | システムクロック同期 | 
| systemd-resolved | 名前解決 | 
| systemd-udevd | デバイス動的検知 | 
またSystemdではUnitという処理単位でシステムの起動処理が行われる。
| 種類 | 説明 | 
|---|---|
| service | 各種サービスの起動 | 
| device | 各種デバイスの表現 | 
| mount | ファイルシステムのマウント | 
| swap | スワップ領域の有効化 | 
| target | 複数のUnitのグループ化 | 
| timer | 指定した日時・間隔での処理実行 | 
2.4.2. Systemdの起動順序
systemdにはランレベルの概念がない。
その代わりにシステム起動時には/etc/systemd/system/default.targetというUnitが処理される。
またグラフィカルログイン(ランレベル5)に相当するUnitは/etc/systemd/system/graphical.targetとなる。
SysVinitのランレベルでSystemdのUnitを置き換えると以下のようになる。
| ランレベル | ターゲット | 
|---|---|
| 0 | poweroff.target | 
| 1 | rescue.target | 
| 2 ~ 4 | multi-user.target | 
| 5 | graphical.target (multi-user.target + ) | 
| 6 | reboot.target | 
default.targetは、上記のターゲットのシンボリックリンクを作成することで設定することができる。
2.4.3. systemctlコマンド
systemctlコマンドはsystemdにおけるサービスを管理を行うコマンド。
systemctl [サブコマンド]| サブコマンド | 説明 | 
|---|---|
| start / stop | サービスの起動 / 終了 | 
| restart | サービスの再起動 | 
| reload | サービスの設定を再読み込み | 
| status | サービスの稼働状況の出力 | 
| is-active | サービスが稼働しているかの出力 | 
| enable / disable | システム起動時にサービスを自動で起動 / 自動で起動しない | 
| reboot | システムの再起動 | 
| list-units | 起動している全てのUnitの状態を表示 | 
| list-unit-files | 全てのUnitを表示 | 
| list-dependencies | Unitの依存関係の表示 | 
2.4.4. journalctlコマンド
journalctlコマンドはsystemd-journaldが収集したログを表示するためのコマンド。パイプやgrepコマンドと組み合わせて使用することが多い。
journalctl