🎃

【Linux】systemd daemon-reload について

に公開

はじめに

サービスファイルを作成したので、systemctl daemon-reloadを実行したい。
しかし、他の実行中サービスに影響が出ないか気になったので調べたことをまとめる。

結論

systemctl daemon-reloadを実行しても、他の起動中サービスには影響は出ない。
このコマンドは systemd に「新しいサービスファイルや変更を再読み込みさせる」ためのものであり、実際にサービスの停止や再起動は行われない。

補足: reload と restart の違い

似たコマンドがいくつかあるが、役割が異なる。
違いを整理すると以下のようになる。

コマンド 目的 実行中サービスへの影響
systemctl daemon-reload サービス定義ファイルの再読み込み(systemd 自体の設定更新) なし
systemctl reload <サービス名> 対象サービスに設定再読み込みを指示 サービスにより異なるが、通常は再起動なし
systemctl restart <サービス名> 対象サービスの再起動 一時的に停止・再起動が発生する

※ daemon-reload は「systemd の再読み込み」であり、reload は「サービス自身の再読み込み」なので目的が異なる。

systemd のディレクトリ構成

ディレクトリ 説明
/usr/lib/systemd/system/ systemd が利用するデフォルトのユニットファイルが格納。RPM パッケージなどによって提供される標準サービスファイルが格納
/run/systemd/system/ 一時的な設定ファイル(systemctl edit 実行時などに作成される)。/usr/lib/systemd/system/よりも優先される
/etc/systemd/system/ 管理者が追加・上書きする設定。自作サービスの配置先。優先度が一番高い。同名のファイルがある場合はこちらが優先

参考にしたサイト

https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/using_systemd_unit_files_to_customize_and_optimize_your_system/unit-files-locations_assembly_working-with-systemd-unit-files

https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/using_systemd_unit_files_to_customize_and_optimize_your_system/proc_modifying-existing-unit-files_assembly_working-with-systemd-unit-files

Discussion