3

udev 没有正确运行我的 bash 脚本。

这是我的规则:

ACTION=="add", KERNEL=="sd*1", SUBSYSTEM=="block", ATTRS{idVendor}=="0930", ATTRS{idProduct}=="6544", RUN="/usr/local/bin/usb-bmw-in"    
ACTION=="remove", KERNEL=="sd*1", SUBSYSTEM=="block", ATTRS{idVendor}=="0930", ATTRS{idProduct}=="6544", RUN="/usr/local/bin/usb-bmw-out"

这是执行的脚本:

#!/bin/bash
echo timer > /sys/class/leds/led1/trigger
rsync --delete-after -c --preallocate -r /media/NAS/Sync/Musik/BMW/ /media/24366EC6366E9916/
umount /dev/sdc1
echo default-on > /sys/class/leds/led0/trigger
echo none > /sys/class/leds/led1/trigger

脚本应该会亮起一个红色的 LED,表明它正在工作。然后它应该将我的汽车播放列表复制到 U 盘并卸载设备。

完成后,它应该点亮一个绿色 LED 并关闭红色 LED。

红色 LED 灯正常亮起,rsync 命令也被触发,但仅此而已。红色 LED 仍亮着,设备仍处于安装状态,绿色 LED 尚未亮起。

当我手动运行脚本时,它工作正常。

4

1 回答 1

1

实际上,通过将两个 echo 命令移动到 umount 命令上方的底部并使用 setid 在后台 shell 中重新启动脚本,正如 stackexchange 上的用户“Alives”所解释的那样:

https://unix.stackexchange.com/a/79545

于 2016-03-25T13:11:24.293 回答