Systemd execはデーモンを再ロードした後に1回だけ機能します。

Systemd execはデーモンを再ロードした後に1回だけ機能します。

udevルールから開始されたシステムサービスがあります。

[Unit]
Description=Open DSLR camera device

[Service]
ExecStart=/bin/sh -c "/tmp/test.sh"

/tmp/test.shまだ多くのことが行われていません:

#!/bin/sh
echo "qwer" >> /tmp/dslr-udev-test.txt

udevルールは関係がないと思います(私のDSLRカメラがUSBに接続されたときにトリガされます)。とにかく、ここにあります:

SUBSYSTEM=="usb", ACTION=="add", ATTR{product}=="Canon Digital Camera", TAG+="systemd", ENV{SYSTEMD_WANTS}="dslr-device.service"

カメラを起動してsudo systemctl daemon-reload開くと、ファイルに/tmp/dslr-udev-test.txt新しいコンテンツが表示されます。でもちょうど一度だけ!カメラの電源を切ってから再度オンにすると、新しいコンテンツは表示されません。

再起動後にsudo systemctl daemon-reloadカメラを開くとファイルに新しいコンテンツが表示され、カメラを再起動するとコンテンツは表示されなくなります。

ExecStartデーモンをリロードした後にサービスが何度も実行されないのはなぜですか?

関連情報