udev无法正确执行规则

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,表示它正在工作。然后,它应该将我的汽车播放列表复制到USB存储设备上并卸载该设备。
完成后,它应该点亮绿色的LED并关闭红色的LED。
红色LED正确点亮,rsync命令也被触发了,但就是这样。 红色LED仍然亮着,设备仍然挂载着,绿色LED还没有点亮。
当我手动运行脚本时,它可以正常工作。
1个回答

1

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接