CentOS Stream9では、OSの起動処理やシステム全体の管理はsystemdによって行われています。systemdの管理方法、使用方法等についてまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
・ブート時のシステムサービスの並行起動
・デーモンのオンデマンドアクティベーション
・依存関係ベースのサービス制御ロジック
●systemdが管理する基本オブジェクト:systemd ユニット
〇systemd ユニット
・システムのリソースとサービスを表す。
・名前、タイプ、および特定のタスクを定義および管理する設定ファイルで構成される。
・ユニットファイルを使用すると、システムの動作を設定できる。
〇systemdユニットタイプの例
・サービス:個々のシステムサービスを制御および管理。
・ターゲット:システム状態を定義するユニットのグループ。
・デバイス:ハードウェアデバイスとその可用性を管理。
・マウント:ファイルシステムのマウントを処理。
・Timer:タスクを特定の間隔で実行するようにスケジュール
〇利用可能なすべてのユニットタイプを表示
# systemctl -t help
〇/usr/lib/systemd/system/
・インストール済みの RPM パッケージで配布された systemd のユニットファイル。
〇/run/systemd/system/
・ランタイム時に作成された systemd ユニットファイル。
・このディレクトリーは、インストール済みのサービスのユニットファイルのディレクトリーよりも優先される。
〇/etc/systemd/system/
・systemctl enable コマンドを使用して作成された systemd ユニットファイルと、サービスを拡張するために追加されたユニットファイル。
・このディレクトリーは、runtime のユニットファイルのディレクトリーよりも優先される。
●設定ファイル
/etc/systemd/system.conf
〇現在ロードされているすべてのサービスユニットをリスト
$ systemctl list-units --type service UNIT LOAD ACTIVE SUB DESCRIPTION auditd.service loaded active running Security Aud chronyd.service loaded active running NTP client/s crond.service loaded active running Command Sche firewalld.service loaded active running firewalld - kdump.service loaded active exited Crash recove NetworkManager.service loaded active running Network Mana rsyslog.service loaded active running System Loggi sshd.service loaded active running OpenSSH serv LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 38 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
※パラメータの説明
・UNIT:サービスユニットのフルネーム
・LOAD:設定ファイルのロード状態
・ACTIVE、SUB:現在の高レベルおよび低レベルのユニットファイルのアクティベーション状態
・DESCRIPTION:ユニットの目的と機能の簡単な説明
〇利用可能なすべてのサービスユニットファイルのステータスをリスト表示
$ systemctl list-unit-files --type service UNIT FILE STATE PRESET sshd.service enabled enabled sshd@.service static -
〇システムサービスのステータスの表示
$ systemctl status sshd.service sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled) Active: active (running) since Wed 2023-11-29 16:00:18 JST; 1 week 2 days ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 1241 (sshd) Tasks: 1 (limit: 4634) Memory: 11.4M CPU: 13min 51.571s CGroup: /system.slice/sshd.service mq1241 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups" 12月 08 19:56:31 inst-strm9.us-west1-b.c.poetic-archway-405306.internal sshd[178951]: Unable to negotiate with 125.
2)システムサービスの起動・停止
〇起動
# systemctl start <name>.service
〇停止
# systemctl stop <name>.service
〇再起動
# systemctl restart <name>.service
・現在のセッションで選択したサービスユニットを停止し、すぐに再起動する。
・対応するサービスがすでに実行中の場合にのみ、サービスユニットを再起動する。
・システムサービスの実行を中断せずに、システムサービスの設定を再ロードする。
〇ブート時のシステムサービス起動の有効化
# systemctl enable <name>.service
・システム管理者は、システムのブートプロセスを制御し、システムがブートする状態を定義できる。
・systemd ターゲットは、システムの起動時に同期ポイントとして機能する関連ユニットのグループ。
・.target ファイル拡張子で終わるターゲットユニットファイルは、systemd ターゲットを表す。
・ターゲットユニットの目的は、依存関係のチェーンでさまざまな systemd ユニットをグループ化すること。
2)一般的なsystemd ターゲット
〇rescue
・ベースシステムにプルしてレスキューシェルを生成するユニットターゲット。
〇multi-user
・マルチユーザーシステムを設定するためのユニットターゲット
・NetworkManager (NetworkManager.service)、D-Bus (dbus.service) といった、その他の必須システムサービスを開始し、basic.target という別のターゲットユニットをアクティブにする。
〇graphical
・グラフィカルログイン画面を設定するためのユニットターゲット
・GNOME Display Manager (gdm.service)または Accounts Service (accounts-daemon.service)などのシステムサービスを開始し、multi-user.target unit もアクティブにする。
〇emergency
・メインコンソールで緊急シェルを起動するユニットターゲット
3)デフォルトターゲット
〇システムを起動するために使用する現在のデフォルトのターゲットユニットを確認
# systemctl get-default
multi-user.target
〇現在ロードされているターゲットをリスト
# systemctl list-units --type target UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Local Encrypted Volumes getty.target loaded active active Login Prompts integritysetup.target loaded active active Local Integrity Protected Volumes local-fs-pre.target loaded active active Preparation for Local File Systems local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network-online.target loaded active active Network is Online network-pre.target loaded active active Preparation for Network network.target loaded active active Network nss-user-lookup.target loaded active active User and Group Name Lookups paths.target loaded active active Path Units remote-fs.target loaded active active Remote File Systems slices.target loaded active active Slice Units sockets.target loaded active active Socket Units sshd-keygen.target loaded active active sshd-keygen.target swap.target loaded active active Swaps sysinit.target loaded active active System Initialization timers.target loaded active active Timer Units veritysetup.target loaded active active Local Verity Protected Volumes LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 20 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
〇別のターゲットユニットをデフォルトで使用するようにシステムを設定
# systemctl set-default <name>.target
4)レスキューモードでの起動
・システムが後のターゲットにアクセスできず、通常のブートプロセスが失敗した場合に、トラブルシューティングまたは修復のためのシングルユーザー環境を提供するレスキューモードで起動できる。
・レスキューモードでは、システムはすべてのローカルファイルシステムをマウントし、特定の重要なシステムサービスを起動しようとするが、ネットワークインターフェイスはアクティブにならない。
●実行方法
・以下のコマンドを実行し、現行セッションで現在のターゲットを変更する。
# systemctl rescue Broadcast message from root@localhost on pts/0 (Fri 2023-03-24 18:23:15 CEST): The system is going down to rescue mode NOW!