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
システムが起動すると自動的に起動します。