udevはRUNでテストスクリプトを実行しません。

udevはRUNでテストスクリプトを実行しません。

USBにデジタル一眼レフカメラ用のビデオデバイスを作成しようとしています。/dev/ボックスの外には何も表示されません。

スピード

$ lsusb
...
Bus 001 Device 010: ID 04a9:3270 Canon, Inc. 
...

次のバス番号とデバイス番号を使用して属性を取得しますudevadm

$ sudo udevadm info --attribute-walk /dev/bus/usb/001/010

  looking at device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5':
    KERNEL=="1-1.5"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ...
    ATTR{ltm_capable}=="no"
    ATTR{manufacturer}=="Canon Inc."
    ATTR{maxchild}=="0"
    ATTR{product}=="Canon Digital Camera"
    ATTR{quirks}=="0x0"
    ...

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1':
    KERNELS=="1-1"
    ...

そこで(優先)メッセージをファイルとして印刷するudevルールを生成できることを期待しています。

$ cat /tmp/test.sh
#!/usr/bin/env bash
echo "asdf" >> /tmp/dslr-udev-test.txt

実行権限:

$ ls -l /tmp/test.sh
-rwxrwxr-x 1 gauthier gauthier 59 Jun 23 22:54 /tmp/test.sh

その後、udevルール自体があります。

$ cat /etc/udev/rules.d/90-canon-dslr.rules 
SUBSYSTEM=="usb", ACTION=="add", ATTR{product}=="Canon Digital Camera", RUN+="/tmp/test.sh"

出力ファイルに出力がないのでtail -f

答え1

#!/usr/bin/env bashもちろん、この場合は使用できません。

それを仕事に変えなさい#!/bin/sh

関連情報