为什么这个 Udev 规则只运行一次

为什么这个 Udev 规则只运行一次

我想设置一个 udev 规则,每次插入 USB 驱动器时运行该规则,该规则会将该 USB 驱动器连接到 VirtualBox 中的 VM。udev 规则可用于将 USB 驱动器连接到正在运行的 VM,但每次启动只能运行一次。请有人帮帮我。我有/etc/udev/rules.d/10-usbmount.rules

 KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/usr/bin/vbox-automount-usb"

这是/usr/bin/vbox-automount-usb

#!/bin/bash
set `lsusb -d ${ID_VENDOR}:${ID_MODEL}| sed 's/:.*//g'`
while [ ! -z "$1" ]; do
  case $1 in
       Bus) shift
       busdevice="$1"
       ;;
       Device) shift
       busdevice=${busdevice}"/$1"
       ;;
  esac
  shift
done
if [ ! -z "$busdevice" ]; then
  address=$(VBoxManage list usbhost | grep "Address:" | grep $bus device | sed -e 's/Address://' -e 's/^[ \t]*//')
  if [ ! -z "$address" ]; then
       su - guestos -c "VBoxManage controlvm guestos_0001 usbattach $address"
  fi
fi

编辑:我/etc/udev/rules.d/10-usbmount.rules也可以通过将其更改为来工作:

ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", RUN+="/usr/bin/vbox-automount-usb"

但第一次在 VirtualBox 中仍然只能安装 USB

编辑:使用时仍然会发生同样的事情

su - guestos -c "VBoxManage controlvm guestos_0001 usbattach `VBoxManage list usbhost | grep "Address:" | grep $bus device | sed -e 's/Address://' -e 's/^[ \t]*//'`"

为了/usr/bin/vbox-automount-usb

相关内容