আমি আমার ইউএসবি ফ্ল্যাশ ড্রাইভগুলি মাউন্ট এবং আনমাউন্ট করার জন্য কিছু udev নিয়ম তৈরি করার চেষ্টা করেছি; এই মুহুর্তের নিয়মগুলি খুব সহজ:
ACTION=="add",KERNEL=="sd[b-z]",RUN+="/root/scripts/plug_flash_drive.sh %k"
ACTION=="remove",KERNEL=="sd[b-z]",RUN+="/root/scripts/unplug_flash_drive.sh %k"
প্লাগ_ফ্ল্যাশ_ড্রাইভ.শ খুব সহজ:
device_name=$1
mount_options="umask=000,utf8"
if [ ! -e "/media/$device_name" ]; then
mkdir "/media/$device_name"
fi
sleep 1
/usr/bin/mount "/dev/$device_name" "/media/$device_name" -o "$mount_options"
unplug_flash_drive.sh:
device_name=$1
umount "/dev/$device_name"
rmdir "/media/$device_name"
আমি কিছু পরীক্ষা করেছি যাতে আমি তা নিশ্চিত করতে পারি:
- প্লাগ ইন করা অবস্থায়, আমার ফ্ল্যাশ ড্রাইভটি সনাক্ত করা হয়; একটি ফাইল / ডিভ মধ্যে তৈরি করা হয়
- প্লাগ_ফ্ল্যাশ_ড্রাইভ.শকে বলা হয় ইউদেব
- স্ক্রিপ্টের mkdir অংশ কাজ করে
- তবে, মনে হচ্ছে স্ক্রিপ্টের "মাউন্ট" অংশটি কার্যকর করা হয়নি, তাই আমার ড্রাইভটি মাউন্ট করা হয়নি
- আমি যখন কমান্ড লাইনে আমার স্ক্রিপ্টগুলি কল করি তখন সেগুলি পুরোপুরি কার্যকর হয়
কেউ কি জানেন যে ওদেব ডেকে মাউন্ট চালানো হয় না কেন?
সম্পাদনা 28/08/14: আমি স্ক্রিপ্টের শেষে ডিগ্রিটি শেষ হওয়ার আগে ডিভাইসটি মাউন্ট করা আছে কিনা তা পরীক্ষা করতে আমার স্ক্রিপ্টের শেষে "গ্রেপ-কিউ / প্রো / মাউন্টস & অ্যান্ড সাফল্য || প্রতিধ্বনি ব্যর্থতা" যুক্ত করেছি added মনে হচ্ছে যে ডিভাইস হয় যে বিন্দু এমনকি যখন স্ক্রিপ্ট udev দ্বারা বলা হয় এ মাউন্ট করা। সুতরাং আসল সমস্যাটি হ'ল "আমার ব্লক ডিভাইসটি মাউন্ট স্ক্রিপ্ট শেষ হওয়ার পরে আপাতদৃষ্টিতে আনমাউন্ট করা হবে যখন উদেব মাধ্যমে ডাকবে":
set -xv
এবং exec >> "$HOME"/mount.log 2>&1
মধ্যে .sh
?
mkdir "$mount_dir"
কিন্তু কেনrmdir "/media/$device_name"
? কোথায়$mount_dir
সেট করা হয়?