GNU/Linux >> Linux の 問題 >  >> Cent OS

UDEV を使用して USB デバイスが接続または削除されたときにスクリプトを実行する方法

この投稿では、USB デバイスが接続または削除されたときに特定のスクリプトを実行する UDEV ルールを作成する手順の概要を説明しています。 udevadm ツールを使用して、デバイスが接続または削除されたときに情報とプロパティを確認できます。 「subsystem-match=SUBSYSTEM」の使用 」 取り付け/取り外したデバイスの種類を特定できます。

1. たとえば、この場合、USB サブシステムでは、以下のコマンドを実行できます:

# udevadm monitor --kernel --property --subsystem-match=usb
monitor will print the received events for:
KERNEL - the kernel uevent

2. 次に、USB デバイスを接続または取り外して、UDEV イベントをトリガーします。

3. 以下に出力例を示します。「<---」行の情報は、ルールを設定する上で考慮すべき重要な情報です。

# udevadm monitor --kernel --property --subsystem-match=usb
monitor will print the received events for:
KERNEL - the kernel uevent
KERNEL[6147.486744] add /devices/pci0000:00/0000:00:0c.0/usb1/1-2 (usb)
ACTION=add             <--------------------------------------------------------- ACTION of the device
BUSNUM=001
DEVNAME=/dev/bus/usb/001/010
DEVNUM=010
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2
DEVTYPE=usb_device      
MAJOR=189
MINOR=9
PRODUCT=90c/1000/1100  <--------------------------------------------------------- ENV{PRODUCT}
SEQNUM=2192
SUBSYSTEM=usb          <--------------------------------------------------------- " SUBSYSTEM=="type_of_device"
TYPE=0/0/0

KERNEL[6147.489141] add /devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0
DEVTYPE=usb_interface
INTERFACE=8/6/80
MODALIAS=usb:v090Cp1000d1100dc00dsc00dp00ic08isc06ip50in00
PRODUCT=90c/1000/1100
SEQNUM=2193
SUBSYSTEM=usb
TYPE=0/0/0

KERNEL[6206.530205] remove /devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0 (usb)
ACTION=remove           <--------------------------------------------------------- ACTION of the device 
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2/1-2:1.0
DEVTYPE=usb_interface
INTERFACE=8/6/80
MODALIAS=usb:v090Cp1000d1100dc00dsc00dp00ic08isc06ip50in00
PRODUCT=90c/1000/1100   <--------------------------------------------------------- ENV{PRODUCT}
SEQNUM=2216
SUBSYSTEM=usb           <--------------------------------------------------------- " SUBSYSTEM=="type_of_device"
TYPE=0/0/0
KERNEL[6206.530551] remove /devices/pci0000:00/0000:00:0c.0/usb1/1-2 (usb)
ACTION=remove
BUSNUM=001
DEVNAME=/dev/bus/usb/001/010
DEVNUM=010
DEVPATH=/devices/pci0000:00/0000:00:0c.0/usb1/1-2
DEVTYPE=usb_device
MAJOR=189
MINOR=9
PRODUCT=90c/1000/1100
SEQNUM=2217
SUBSYSTEM=usb
TYPE=0/0/0

4. 上記の例を使用して、/etc/udev/rules.d/ でスクリプトを実行するルールを作成できます。 .たとえば、新しいファイル「5-usbstick-font.rules」を作成できます。 "、次のような構文で:

# cat /etc/udev/rules.d/5-usbstick-font.rules
ACTION=="add", SUBSYSTEM=="usb", ENV{PRODUCT}=="90c/1000/1100", RUN=="/bin/su godiego --command='/home/godiego/run-start.sh'"
ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="90c/1000/1100", RUN+="/bin/su godiego --command='/home/godiego/run-stop.sh'"

5. 以下のコマンドを実行して、UDEV ルールをリロードします。

# udevadm control --reload

ここで、USB デバイスを再度取り付けたり取り外したりすると、カスタマイズされたスクリプト (run-start.sh や run-stop.sh など) が実行されます。


Cent OS
  1. USBデバイスプラグインでカスタムスクリプトを実行する方法は?

  2. USBデバイスが削除されたときにシェルスクリプトでイベントをトリガーする方法は?

  3. CentOS/RHEL 7 で udev を使用してカスタム デバイス名を設定する方法

  1. 「hdparm」ツールを使用して USB デバイスへの書き込みアクセスを無効にする方法

  2. udev ルールを使用して USB 挿入時にスクリプトを実行する

  3. メール サーバーにメールが届いたときにスクリプトを実行する方法は? (デビアン)

  1. USB デバイスを接続するときにシェルスクリプトを実行する方法

  2. Linuxでディレクトリの内容が変更されたときにスクリプトを自動的に実行する方法は?

  3. USB バージョン 1.1 または 2.0 を確認する方法