Если это не лучшее место для размещения этого вопроса, не могли бы вы направить меня в более подходящее место для публикации этого вопроса.
Что я пытаюсь сделать:
У меня есть 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"
Может ли кто-нибудь указать мне направление, чтобы решить эту проблему? Спасибо за ваше время.
Просто попробуйте простой командный цикл, очень низкая вычислительная мощность, но полезная.
#!/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 &
Убедитесь, что вы добавили это до выхода 0. Готово! Всякий раз, когда ваш flashdrive монтирует myscript.sh, он будет запущен, затем, когда он отключен, x снова будет равен 0, и скрипт снова начнет его искать, чтобы вы подключили его!