2.4. Systemd

2.4.1. Systemdの概要

Systemdのシステムではinitの代わりにsystemdプロセスが起動し各サービスの管理を行う。またSystemdは処理を分割して並列化することでシステム起動処理を高速化している。具体的には以下のような複数のデーモンプロセスが連携して動作する

プロセス説明
systemdsystemdを統括するメインプロセス
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を置き換えると以下のようになる。

ランレベルターゲット
0poweroff.target
1rescue.target
2 ~ 4multi-user.target
5graphical.target (multi-user.target + )
6reboot.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-dependenciesUnitの依存関係の表示

2.4.4. journalctlコマンド

journalctlコマンドはsystemd-journaldが収集したログを表示するためのコマンド。パイプやgrepコマンドと組み合わせて使用することが多い。

journalctl