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 は点灯していません。

スクリプトを手動で実行すると、正常に動作します。

4

1 に答える 1

1

実際には、umount コマンドの上の下部にある 2 つの echo コマンドを移動して機能させ、stackexchange のユーザー「Alives」によって説明されているように、setsid を使用してバックグラウンド シェルでスクリプトを再起動しました。

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

于 2016-03-25T13:11:24.293 に答える