我正在为 Raspberry Pi 3 开发 Raspian OS (Linux)。我正在尝试执行一项简单的任务,即当我将任何 USB 连接到端口时,它应该将数据从特定位置复制到 USB 并清除该位置中的文件,这是我的脚本(testscript.sh),
#gpio 1 and 0 are for led on/off while copying
gpio -g mode 17 out
gpio -g write 17 1
sleep 10
sudo cp -f /home/pi/NewLog.log /media/usb/NewLog-$(date -u'+%Y%m%d%H%M').log
if [ $? -eq 0 ]; then
echo -n > /home/pi/NewLog.log
fi
gpio -g write 17 0
echo "content copied to USB"
我在 /etc/udev/rules.d 中创建了 UDEV 规则
内核==“sd *”,子系统==“usb”,操作==“添加”,RUN + =“/home/pi/testscript.sh”
我还安装了 usbmount,以便 USB 自动挂载在 /media/usb 文件夹中 我还在 /lib/udev/rules.d 中找到了 usbmount.rules
现在,每次我插入 USB 时,它都会将一个空文件复制到 USB,拔下 USB 后,实际复制的文件位于位置 /media/usb...
我猜测 /etc/udev/rules.d/myrule 中的规则在 /lib/udev/rules.d/usbmount 之前执行,也许这就是为什么它在我的 USB 安装之前将数据复制到 /media/usb 的原因!任何帮助都感激不尽
答案1
您可能可以检查该目录是否是挂载点(根据这答案)在复制任何内容之前。我会将检查放入无限 while 循环中,但我认为这不是很正统,因为它可能会挂起。