3 systemd
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