CentOS Stream9のシステム管理(systemd)

CentOS Stream9では、OSの起動処理やシステム全体の管理はsystemdによって行われています。systemdの管理方法、使用方法等についてまとめました。

※目次をクリックすると目次の下部にコンテンツが表示されます。

systemdの概要
●systemd の主な機能
 
・ブート時のシステムサービスの並行起動
・デーモンのオンデマンドアクティベーション
・依存関係ベースのサービス制御ロジック
 
●systemdが管理する基本オブジェクト:systemd ユニット
 
〇systemd ユニット
・システムのリソースとサービスを表す。
・名前、タイプ、および特定のタスクを定義および管理する設定ファイルで構成される。
・ユニットファイルを使用すると、システムの動作を設定できる。
 
〇systemdユニットタイプの例
・サービス:個々のシステムサービスを制御および管理。
・ターゲット:システム状態を定義するユニットのグループ。
・デバイス:ハードウェアデバイスとその可用性を管理。
・マウント:ファイルシステムのマウントを処理。
・Timer:タスクを特定の間隔で実行するようにスケジュール
 
〇利用可能なすべてのユニットタイプを表示
# systemctl -t help

systemdのユニットファイル
●ユニットファイルの保管場所
 
〇/usr/lib/systemd/system/
・インストール済みの RPM パッケージで配布された systemd のユニットファイル。
 
〇/run/systemd/system/
・ランタイム時に作成された systemd ユニットファイル。
・このディレクトリーは、インストール済みのサービスのユニットファイルのディレクトリーよりも優先される。
 
〇/etc/systemd/system/
・systemctl enable コマンドを使用して作成された systemd ユニットファイルと、サービスを拡張するために追加されたユニットファイル。
・このディレクトリーは、runtime のユニットファイルのディレクトリーよりも優先される。
 
●設定ファイル
/etc/systemd/system.conf

systemctlによるシステムサービス管理
1)システムサービスのリスト表示
 
〇現在ロードされているすべてのサービスユニットをリスト

$ 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

ターゲットを用いたブート管理
1)systemdターゲット
 
・システム管理者は、システムのブートプロセスを制御し、システムがブートする状態を定義できる。
・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!

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください