如果这不是发布该问题的最佳位置,您能否将我引导到一个更合适的地方来发布该问题?
我正在尝试做的事情:
我有一个 USB 驱动器,它是,fat32
它的名称是JavaClasses
。每当我插入它时,它都会被挂载,并且它的可访问路径是/media/bill/JavaClasses
。我有一个脚本,当我运行它时,它会检查目录是否JavaClasses
存在,如果存在,它将创建一个具有这种格式的目录。yyyymmddhhmm
然后脚本会将我的 eclipse 目录复制(备份)到这个新目录。
我在 下创建了一条新规则/etc/udev/rules.d/85-javaclasses.rules
。这将启动上述脚本。该脚本有 2 秒的延迟以允许安装。
现在的情况:
如果我手动运行,脚本可以正常运行。插入驱动器后,它不会自动运行。
命令行和信息:
这是中的命令85-javaclasses.rules
。
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0930", ATTRS{idProduct}=="6545", RUN+="/home/bill/bin/javaclasses.sh"
这是我跑步时得到的
udevadm info --attribute-walk --name /dev/sdb1
looking at parent device '/devices/pci0000:00/0000:00:07.0/0000:04:00.0/usb10/10-1/10-1.4':
KERNELS=="10-1.4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{devpath}=="1.4"
ATTRS{idVendor}=="0930"
ATTRS{speed}=="480"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{busnum}=="10"
ATTRS{devnum}=="4"
ATTRS{configuration}==""
ATTRS{bMaxPower}=="200mA"
ATTRS{authorized}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bNumConfigurations}=="1"
ATTRS{maxchild}=="0"
ATTRS{bcdDevice}=="0100"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{quirks}=="0x0"
ATTRS{serial}=="001A4D5E4020ED5199130595"
ATTRS{version}==" 2.00"
ATTRS{urbnum}=="2197"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Kingston"
ATTRS{removable}=="unknown"
ATTRS{idProduct}=="6545"
ATTRS{bDeviceClass}=="00"
ATTRS{product}=="DataTraveler 2.0"
有人能告诉我如何解决这个问题吗?谢谢您的宝贵时间。
答案1
只需尝试一个简单的命令循环,处理能力非常低,但很有用。
#!/bin/bash
x=0
while [ true ]
do if [ $x = 0 ]
then if [ -s /media/myflashdrive/* ]
then bash /home/user/myscript.sh
x=1
fi
else if [ -s /media/myflashdrive/* ]
then true
else x=0
fi
fi
sleep 10
done
将其保存在 /etc/ 中,并将此行添加到 /etc/rc.local:
bash /etc/this_script.sh &
确保在 exit 0 之前添加它。完成!每当您的闪存驱动器安装时,myscript.sh 都会运行,然后当它卸载时,x 将再次等于 0,并且脚本将再次开始寻找它以供您插入!