ディスク上のファイルが変更されたら、systemdサービスを自動的に再起動します。

ディスク上のファイルが変更されたら、systemdサービスを自動的に再起動します。

デフォルトでは、遊牧民クライアントであるサービスがあります。最小限のバージョンは次のとおりです。

[Unit]
Description=Nomad Client
Documentation=https://nomadproject.io/docs/
After=network-online.target

[Service]
ExecStart=/usr/bin/nomad agent -config /etc/myapp/myconfig.json

[Install]
WantedBy=multi-user.target

このサービスは、に提供されている特定の設定を使用してノーマドプロセスを開始します/etc/myapp/myconfig.json

私が使用しているアプリケーションはこの遊牧民クライアントを中心に構築されており、設定ファイルはアプリケーションの存続期間中いつでも変更される可能性があります。

/etc/myapp/myconfig.jsonディスクに変更が発生するたびにサービスを再起動したいと思います。

ベストアンサー1

あなたはパス単位

この質問に答えるために、あなたのサービスユニットがと仮定しますnomad.service

まず、サービスをnomad-restart.service oneshot再開するサービスを作成しますnomad。次の内容で/etc/systemd/system/nomad-restart.serviceを作成します。

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart nomad.service

.path次に、特定のファイルが変更されたときにサービスを有効にするためのユニットが必要です。/etc/systemd/system/nomad-restart.path次のコンテンツにします。

[Path]
PathChanged=/etc/myapp/myconfig.json

[Install]
WantedBy=multi-user.target

パス単位の開始と有効化:

systemctl enable --now nomad-restart.path

これで、指定されたパスが変更されるたびにサービスが再起動されます。nomad-restart.path指定されたファイルが変更されると、このデバイスが実行されます。これにより、アクティブ化(「開始」とも呼ばれます)され、 nomad-restart.service呼び出されてからsystemctl restart nomad.service終了します。

おすすめ記事