ファイルが変更されたときにシステムサービスを自動的に再起動するには?

ファイルが変更されたときにシステムサービスを自動的に再起動するには?

systemdカスタムファイルを使用して組み込みLinuxデバイスでプログラムを起動するサービスがあります。ファイルが変更/変更されたら、自動的にこのサービスを開始したいと思います。マニュアルの読み込み中にユニットファイルを使用してこれを行うソリューションをsystemd見つけました。.path私の設定は次のとおりです。

test.service

[Unit]
Description=MyApp
After=network-online.target

[Service]
WorkingDirectory=/data/test
ExecStart=/usr/bin/myapp -c /data/test/myconfig.cfg

[Install]
WantedBy=multi-user.target

test-restart.service内容を含むファイルを作成しました。

[Service]
Type=OneShot
ExecStart=/usr/bin/systemctl restart test.service

さらに、単位ファイルがありますtest-restart.path

[Path]
Unit=test-restart.service
PathChanged=/data/test/myconfig.cfg 

[Install]
WantedBy=multi-user.target

しかし、私が理解したところによると、実行する必要がありますsystemctl enable --now test-restart.path。ファイルが変更された後にtest-restart.serviceアクティブになると、このタスクは実行され再起動されますtest.service。しかし、systemctl enable --now test-restart.path自動的に呼び出す方法がわかりませんか?私は、この作業を毎回手動で実行する必要がありますか(または最初に実行する必要がありますか?)それとも処理する必要がありますかsystemctl?デバイスが再起動するとどうなりますか?systemctl enable --now test-restart.path手動で再度呼び出す必要がありますか?

よろしくお願いします。

PS:ここに欠けている情報があれば教えてください。

ベストアンサー1

素晴らしい

  • systemctl enable --now test-restart.path起動時に自動的に起動するように設定します。
  • 指定された開始レベルにソフトリンクを追加します。
  • これは継続的な動作です。
  • systemd起動時に起動します。
  • 逆方向の依存関係が表示されます。systemctl list-dependencies test-restart.path --reverse
  • systemctl enable --now test-restart.pathもう一度手動で行う必要はありません
  • デバイスは一度だけ再起動するだけです。
  • test-restart.pathシステムが起動すると自動的に起動します。

おすすめ記事