🐙

3 systemd

2023/07/25に公開

3-1 systemdとは?

systemdはLinuxオペレーティングシステムのシステムおよびサービスマネージャである。起動時に最初のプロセスとして実行されると(PID 1として)、ユーザー空間のサービスを立ち上げて維持するinitシステムとして動作する。Linuxカーネルが起動するとカーネルの初期化が行われ、その最終段階でPID1の/sbin/initを生成します。/sbin/initは/lib/systemd/systemdへのシンボリックリンクです。

3-2 systemctl コマンド

systemctlコマンドはSystemdとサービスマネージャーをコントロールします。

構文
systemctl [OPTION] COMMAND [UNIT]

オプション

オプション 説明
-a, --all list-unitsと共に使用する。非アクティブのユニットも表示する。
-l, --full ユニット名を省略せずに表示する。
-t, --type= 引数に指定したserviceやunitを表示させる。

コマンド

コマンド 説明
start コマンドラインで指定したユニットを開始する。
stop コマンドラインで指定したユニットを停止する。
reload コマンドラインにリストされたすべてのユニットに対して、それらの設定を再読み込みするよう要求します。
list-units systemd が現在メモリ上に保持しているユニットを一覧表示します。
restart ユニットを再起動します。
cat ユニットの設定ファイルを表示します。
edit ユニットの設定ファイルの内容を新規編集。



systemctl コマンドはtabでの入力補完ができます。


使用例

アクティブなユニットを全て表示

systemctl list-units


非アクティブなユニットを含めて、ロードされているユニットを表示

systemctl list-units --all


インストールされているユニットを全て表示する

systemctl list-unit-files

3-3 ターゲット

ターゲットは、起動プロセスやサービス等、複数ユニットをグループ化したユニットです。

ターゲットはユニットの設定ファイルの末尾が「.target」となっており、systemdのターゲットユニット情報をエンコードします。これはユニットをグループ化し、スタートアップ時に既知の同期ポイントして使用される。

ターゲット 説明
graphical.target システム起動時のターゲット
rescue.target 障害発生時やメンテナンス時に管理者が使用するターゲット
multi-user.target グラフィカルではない、テキストベースでのマルチユーザーのセットアップを行うターゲット
graphical.target グラフィカルログインをセットアップするターゲット


非アクティブなターゲットも含めて全て表示

systemctl list-units -t target --all


デフォルトターゲットの表示
シンボリックリンクの確認

ls -l /etc/systemd/system/default.target
ls -l /usr/lib/systemd/system/default.target


デフォルトターゲットの表示

systemctl get-default


デフォルトターゲットの変更

systemctl set-default multi-user.target

実行例


再起動後VirtualBoxのコンソールを確認するとCUIでのログイン方法となる。

3-4 サービスの管理

nginx.serviceの状態確認(Active: inactive (dead)となっている)

systemctl status nginx.service


nginx.serviceの起動

systemctl start nginx.service


nginx.serviceの状態確認(Active: active (running)となっている)

systemctl start nginx.service


Teratermだと画面が小さいのでキーボードの-->から画面をスクロールすることができます。
ここでは自動起動するか確認することができます。

3-5 systemd-udevdサービス

systemd-udevdはカーネルueventsを受け取ります。systemd-udevdは常にudev rulesに従って処理を実行します。udev(Dynamic device management)はシステムソフトウェアにデバイスイベントを提供し、デバイスの権限の管理と/dev/ディレクトリに新しいデバイスファイルを追加または削除します。

実行例

VirtualBox内で新しいディスクを追加します。


/dev/配下にsdbというデバイスファイルが追加されました。


ルールファイルを追加します。

/etc/udev/rules.d/99-test.rules
KERNEL=="sd[b-f]",ACTION=="add|change",OWNER="testuser",GROUP="testuser",MODE="0600"


再起動後、デバイスファイルのパーミッションや所有者が変更になりました。

Discussion