ターゲットファイルが変更されていなくても、起動時にシステムパスユニットが実行されます。

ターゲットファイルが変更されていなくても、起動時にシステムパスユニットが実行されます。

ファイルが変更されたときにPythonスクリプトをトリガーするためにシステムパス+サービスを使用しようとしています。

ファイルが変更された時期に関係なく、起動時にスクリプトが実行されることがわかりました。

これは私の.pathファイルの一部です。


PathChanged=/home/pi/network/trigger.txt
Unit=monitor.service

現在テストすると、monitor.serviceはタイムスタンプ付きのログファイルを作成するスクリプトを起動します。以下はログファイルの一部です。

 14:26:40 Friday September 3, 2021 file modified

stat /home/pi/network/trigger.txt を実行すると、

Access: 2021-07-14 17:07:42.871258883 -0400
Modify: 2021-08-24 16:53:00.879999930 -0400
Change: 2021-08-24 16:53:00.879999930 -0400

明らかに、ファイルはまだ変更されていませんが、とにかく起動時に.path単位が実行されます。ここで何が起こっているのでしょうか?

答え1

このパスはmonitor.service起動時にトリガーしてはいけませんが、起動時にこのパスを有効にするのは一般的な間違いですmonitor.service

monitor.service一般的な内容が含まれている場合:

[Install]
WantedBy=multi-user.target

これによりmonitor.service起動時に有効になります。またはそれがあなたによって引き起こされるたびに*.path

解決策1:

サードパーティのサービスの場合は、サービスを無効にしてください。これは起動時にアクティブになるのを防ぎますが、ユーザーがトリガーするのを防ぎません*.path

sudo systemctl disable monitor.service

解決策2:

monitor.service自分で作成する場合[Install]は、その部分を削除してくださいmonitor.service

関連情報