USBドライブを自動的にマウントするために、バックグラウンドでスクリプトを実行するようにudevにルールを設定しました。スクリプトを正常に実行しましたが、何らかの理由でマウントに失敗しました。
ルール:
ACTION=="add", KERNEL=="sd[a-z]*", RUN+="/etc/mntUsbChk.sh &"
このスクリプトでは:
#!/bin/sh
sleep 2
mkdir /mnt/usb
foundUsb=false
if [ -e /dev/sda1 ]; then
mount /dev/sda1 /mnt/usb
$foundUsb=true
fi
if [ -e /dev/sdb1 ]; then
mount /dev/sdb1 /mnt/usb
$foundUsb=true
fi
if [ -e /dev/sdc1 ]; then
mount /dev/sdc1 /mnt/usb
$foundUsb=true
fi
if [ $foundUsb -eq false ]; then
exit
fi
echo "USB MOUNTED"
[1610.868626] FAT-fs(sdb1): ボリュームが正しく分離されていません。一部のデータが破損している可能性があります。 fsckを実行してみてください。
/mnt/usb
編集:詳細:USB接続後にフォルダが作成されるため、スクリプトは確実に実行されます。
また、 mount /dev/sda1 /mnt/usb
ルールを有効にする前にUSBを接続してから手動で入力すると、正しくインストールされます。なぜ通常のudevにインストールできないのかわかりません。
ベストアンサー1
スクリプトが/mnt/usb
すでに存在する場合は失敗します。これが問題の原因であるかどうかはわかりませんが、確かにスクリプトエラーです。
mount /mnt/usb
代わりに使用してください:
mount -p /mnt/usb
~からman mount
:
-p、--親
存在する場合、エラーはありません。必要に応じて親ディレクトリを作成します。