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。
红色指示灯正常亮起,rsync命令也会启动,但仅此而已。红色LED仍然亮着,设备仍然安装,绿色LED尚未打开。
当我手动运行脚本时,它工作正常。
实际上,通过将底部的两个echo命令移动到umount命令上方,并在具有setsid的后台shell中重新启动脚本,正如stackexchange:上的用户"Alives"所解释的那样
https://unix.stackexchange.com/a/79545