回答:
一般的な用途で、任意のUSBストレージでプログラムを実行する場合。ルールの一致にドライバーを使用します。
udev
ルールファイルを追加する
sudo nano /etc/udev/rules.d/90-detect-storage.rules
このルールを追加
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram"
プログラムでディスクを区別して、さまざまな操作を実行する場合は、次のコマンドを使用します(シリアル番号または任意の属性を渡すことができます)。
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/pathto/yourprogram $env{ID_VENDOR_ID} $env{ID_MODEL_ID}"
すべてのルールを再読み込み
sudo udevadm control --reload-rules
フラッシュドライブを取り外して再度差し込みます
ノート:
私はこのルールを使用して、ルールがトリガーされたときにログを作成するテストを行いました。
ACTION=="add", DRIVERS=="usb-storage", DRIVER=="sd", RUN+="/bin/sh -c 'echo $env{ID_VENDOR_ID} $env{ID_MODEL_ID} >> /home/username/Desktop/usb-storage.log'"
#
行の先頭に追加することで、不要なルールにコメントを付けることができます。ルールファイルには複数のルールを含めることができます。
env
使用可能なすべての変数を確認するには、次のコマンドを使用します。
ACTION=="add", DRIVERS=="usb-storage", RUN+="/bin/sh -c 'echo == >> /home/username/Desktop/usb-storage-env.log; env >> /home/username/Desktop/usb-storage-env.log'"
ルールの一致に使用するパラメーターを確認するには、次のコマンドを実行します。
sudo udevadm info --name=/dev/sdb1 --attribute-walk
参照:
を使用udev
して任意のコマンドを実行できます。これを機能させるには、次の場所にルールを作成します/etc/udev/rules.d/
。
sudo nano /etc/udev/rules.d/my-usb-device.rules
そして入力してください:
ACTION=="add", ATTRS{idProduct}=="XXXX", ATTRS{idVendor}=="YYYY", RUN+="/location/of/my/command"
注:ザ・XXXX
とYYYY
値から取得されますlsusb
出力。