
デフォルトでは、遊牧民クライアントであるサービスがあります。最小限のバージョンは次のとおりです。
[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
終了します。