#author("2025-08-26T11:27:49+09:00","default:k1rou","k1rou")
#author("2025-10-04T16:44:50+09:00","default:k1rou","k1rou")
*systemd [#i3afede8]
-[[Linux]]のサービスを管理する仕組み
-CentOS7以降で導入された

*systemdの仕組み [#x484f2bf]
**ユニット [#r7cf2c06]
-サービスを管理する単位
-サービスを並列で起動することが可能

***ユニットのタイプ [#sc26a046]
-service
-target
-mount
-device
-socket

**ターゲット [#re1f7164]
-制御対象となる複数のサービスをグループ化する仕組み
-ユニットの起動する順番や依存関係を定義することが可能

**起動する順番 [#d84e9012]
-default.target
--poweroff.target
--rescue.target
--multi-user.target
--graphical.target
--reboot.target

*コマンド [#cab51536]
**systemctl [#if2cd13b]
-サービスの状態を確認
 systemctl status <service-name> ※サービスの稼働状況を表示
 systemctl is-active <service-name> ※サービスが稼働中か表示
| 状態 | 説明 |h
| loaded | プロセスが起動している状態 |
| active(running) | プロセスが実行中 |
| active(exited) | プロセスの起動が終了 |
| active(waiting) | イベントの発生を待機中 |
| inactive | 起動していない |
| enabled | 自動起動がON |
| disabled | 自動起動がOFF |

-自動起動の設定
 systemctl is-enabled <service-name> ※自動起動の設定を表示
 systemctl enable <service-name> ※自動起動ON
 systemctl disable <service-name> ※自動起動OFF
 systemctl preset <service-name> ※自動起動ONまたはOFF(プリセットポリシーに従う)
--自動起動が設定されているサービスの確認
 ls -l /etc/systemd/system/multi-user.target.wants/
 ※自動起動を有効にするとここにサービスのシンボリックリンクが作成される

-サービスの起動/停止/再起動
 systemctl start <service-name> ※起動
 systemctl stop <service-name> ※停止
 systemctl restart <service-name> ※再起動
 systemctl reload <service-name> ※サービスの設定を再読み込み

-Unitの状態を確認
 systemctl list-dependencies ※Unitの依存関係を表示
 systemctl list-dependencies <service-name> ※Unitの依存関係を表示
 systemctl list-units ※起動している全てのUnitの状態を表示
 systemctl list-unit-files ※全てのUnitを表示
 systemctl list-unit-files -t service ※サービスの一覧を表示
 systemctl list-unit-files -t service --state=enabled ※サービスの一覧を表示(自動起動が有効のみ)

-Unitのマスク(手動でも起動できないようにする)
 systemctl mask <service-name> ※マスク有効
 systemctl unmask <service-name> ※マスク解除

-Unitファイルを再読み込み ※Unitファイルを追加・変更したら毎回行う
 systemctl daemon-reload

-システムの操作
 systemctl poweroff ※システムを停止
 systemctl reboot ※システムを再起動

-デフォルトのターゲット
 systemctl get-default ※デフォルトで設定されているターゲットを表示
 systemctl set-default <target-name> ※デフォルトのターゲットの設定を変更

-モードの切り替え
 systemctl isolate poweroff.target ※システムを停止する
 systemctl isolate reboot.target ※システムを再起動する
 systemctl isolate rescue.target ※シングルユーザーモードに移行する
 systemctl isolate emergency.target ※緊急モードに移行する

-ヘルプ
--Tabを2回押すと引数の一覧が表示される

***ターゲット [#s39b1a3a]
-デフォルトのターゲットを表示
 systemctl get-default
-デフォルトのターゲットを設定
 systemctl set-default <target-name>

-ターゲットの切り替え
 systemctl isolate rescue.target ※シングルユーザーモード
 systemctl isolate multi-user.target ※マルチユーザーモード
 systemctl isolate emergency.target ※緊急モード

*設定ファイル(ユニットファイル) [#h119d62b]
**ユニットファイルの種類 [#xd4910d7]
***/usr/lib/systemd/system/ [#h4e3af6b]
-標準のユニットファイル(通常はパッケージが提供) ※Red Hat系
-ユニットファイルを変更する場合、標準のユニットファイルを/etc/systemd/system/ にコピーして、コピー先のファイルを変更する(推奨)

***/lib/systemd/system/ [#y9807c7c]
-標準のユニットファイル(通常はパッケージが提供) ※Debian系

***/etc/systemd/system/ [#t4d635c5]
-ユーザーが独自に定義したユニットファイル
-標準のユニットファイルより優先される

**ユニットファイルの設定内容 [#q4b33b57]
***Unitセクション [#r9f9c7e8]
-ユニットの説明、他のユニットとの依存関係を定義する
| オプション名 | 説明 |h
| Description | ユニットの説明 |
| Documentation | ユニットのドキュメント |
| After | 順序関係:指定されたユニットがアクティブになったら開始する |
| Before | 順序関係:指定されたユニットより先にアクティブになる必要がある |
| Requires | 依存関係:指定したユニットも起動する |
| Wants | 依存関係:指定したユニットも起動する ※Requiresより依存関係が弱い |
| Conflicts | 依存関係 ※Requiresと反対 |

***Serviceセクション [#td1c1af8]
-サービスの起動・停止・再起動のコマンドや各種パラメータを定義する
| オプション名 | 説明 |h
| Type | 起動タイプ(simple[default], forking, oneshot, dbus, notify) |
| ExecStart | ユニットの開始時に実行するコマンド |
| ExecStartPre |  |
| ExecStartPost |  |
| ExecStop | ユニットの停止時に実行するコマンド |
| ExecReload | 0 |
| Restart | ユニットの再起動の設定&br;(no[default], always, on-success, on-failure, on-abnormal, on-abort, on-watchdog)&br;※killやタイムアウトで終了した場合に再起動する(stopやrestartの操作で終了した場合は再起動しない) |
| RestartSec | 再起動する時の待機時間(単位:秒) |
| User | サービスを実行するユーザー |
| Group | サービスを実行するグループ |
| Environment | サービスの環境設定 |
| WorkingDirectory | サービスを実行する際の作業ディレクトリ |
| StandardOutput | 0 |
| StandardError | 0 |
| SuccessExitStatus | 指定したステータスを正常終了として扱う |
| KillMode | 0 |
| ProtectSystem | 0 |
| ProtectHome | 0 |
| NoNewPrivileges | 0 |
| PrivateTmp | 0 |
| ReadOnlyPaths | 0 |
| ReadWritePaths | 0 |

***Installセクション [#sbc79a3c]
-ユニットの別名などを定義する
| オプション名 | 説明 |h
| WantedBy | 依存関係の設定(記述されているユニットから依存されていることを表す) |
| RequiredBy | 0 |
| Alias | 0 |
| Also | 0 |
| DefaultInstance | 0 |

*補足 [#i5a6724c]
-起動するターゲットの確認
--/etc/systemd/system/default.target
 ls -l /etc/systemd/system/default.target
 →default.targetのリンク先で確認する
 →multi-user.target であればマルチユーザ

-起動するターゲットの変更
--default.target のリンク先を変更する(lnコマンド) 

*CUIツール [#sd69c4c4]
**ntsysv [#wc1aa170]
-インストール
 dnf install ntsysv

-起動
 ntsysv

*関連サイト [#oa8fad74]
-1.3. ユニットファイル構造 (RHEL9) - Red Hat Documentation~
https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/using_systemd_unit_files_to_customize_and_optimize_your_system/con_unit-file-structure_assembly_working-with-systemd-unit-files

*関連用語 [#y8e4920e]
-[[Linuxコマンド]]
-[[Linuxの起動・シャットダウン]]
-[[SysVinit]]
-[[SystemdJournal]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS