always connectedドライブがマウントされているときにスクリプトを実行するにはどうすればよいですか?
udev
を試しました。具体的にはルールを配置します99-local.rules
in /etc/udev/rules.d
:
KERNEL=="mmcblk0",ACTION=="mount",RUN+="/path/to/script.sh"
そしてルールをリロードします。ただし、ドライブがマウントされている場合、スクリプトは実行されません。
ドライブはSDカードであるため、mmcblk0
ブロックデバイス名。 not USBドライブであり、notホットプラグされています。
udev
でこれを達成するのは簡単ではないことがわかります。 _udevadm monitor -p
_を使用して、マウント時に、SDカードがudev
で_ACTION=="mount"
_イベントを発生させないことを確認しました。私はどこかでmount
イベントが非推奨または削除されたことを読みました。 udev
は、結局のところ、ホットプラグを管理することになっています。
さらに、udev
- triggeredスクリプトは、実行中にudev
をブロックするため、非常に迅速に完了する必要があります。バックアップなどの実質的なタスクには理想的ではありません。
_/etc/systemd/system/
_のsystemd
を使用して、ExecStart
サービスファイルを_.mount
_に書き込むことで目的を達成しました。
_[Unit]
Description=Script to run when drive mounted at /path/to/Stuff
Requires=path-to-Stuff.mount
After=path-to-Stuff.mount
[Service]
ExecStart=/path/to/script.sh
Type=forking
[Install]
WantedBy=path-to-Stuff.mount
_
正しく動作しますが、マウントポイントを指定する必要があります。