我正在尝试为 USB 上的 DSLR 相机创建视频设备。/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
。