উত্তর:
সিস্টেমডের সাথে এখন অনেক সুন্দর সমাধান রয়েছে solution আপনি এমন একটি পরিষেবা তৈরি করেন যা নির্ভর করে এবং আপনার মিডিয়া দ্বারা চাইছে যেমন:/etc/systemd/system/your.service
[Unit]
Description=My flashdrive script trigger
Requires=media-YourMediaLabel.mount
After=media-YourMediaLabel.mount
[Service]
ExecStart=/home/you/bin/triggerScript.sh
[Install]
WantedBy=media-YourMediaLabel.mount
তারপরে আপনাকে পরিষেবাটি চালু / সক্ষম করতে হবে:
sudo systemctl start your.service
sudo systemctl enable your.service
মাউন্ট পরে, সিস্টেমড আপনার ট্রিগার স্ক্রিপ্ট ফায়ার করে। Udev নিয়মের সুবিধাটি হ'ল স্ক্রিপ্টটি সত্যই মাউন্টের পরে জ্বলতে থাকে, সিস্টেম ডিভাইস যুক্ত করার পরে নয়।
কেস ব্যবহার করুন : আমার একটি ক্রিপ্টযুক্ত পার্টিশন রয়েছে যা আমি স্বয়ংক্রিয়ভাবে ব্যাকআপ নিতে চাই। ডিভাইসটি যুক্ত করার পরে আমাকে পাসওয়ার্ডটি টাইপ করতে হবে। যদি আমি ব্যাকআপ স্ক্রিপ্টটি ওদেবকে হুক করে দিয়েছি, আমি পাসওয়ার্ড টাইপ করার সময় স্ক্রিপ্টটি চালানোর চেষ্টা করে যা ব্যর্থ হবে।
রিসোর্স: উদেবের সাথে স্ক্রিপ্টিং
দ্রষ্টব্য: আপনি এর সাথে আপনার ডিভাইস ইউনিটটি খুঁজে পেতে পারেন:systemctl list-units -t mount
systemctl enable your.service
। স্ক্রিপ্ট ফাইলটি কার্যকর হতে হবে।
Requires=
, After=
এবং WantedBy=
উভয় সঙ্গে লাইন media-bb.mount
এবং media-BB.mount
কারণ আমাকে নটিলাস শো হিসাবে "বিবি", নয় "BB" ভলিউম। মূলধন ব্যতীত একই ত্রুটি বার্তা। কোনো সমস্যা? আমার কি কোনওভাবে সেই media-<something>.mount
পরিষেবাটি তৈরি করতে হবে ?
আপনার ডিভাইসটি সন্ধান করে শুরু করুন lsusb
। আইডি নোট করুন (উদাঃ 0a81:0101
)
এর /etc/udev/rules.d/
মাধ্যমে একটি নতুন udev নিয়ম ফাইল তৈরি করুন sudoedit /etc/udev/rules.d/100-mount-videos.rules
এবং সেখানে এইভাবে একটি নতুন নিয়ম চূড়ান্ত করুন:
ACTION=="add", ATTRS{idVendor}=="0a81", ATTRS{idProduct}=="0101", RUN+="/home/your_username/bin/mount_videos.sh"
আমি কীভাবে আইডি ব্যবহার করেছি তা নোট করুন lsusb
।
তারপরে কাজটি করার জন্য আপনাকে কেবল স্ক্রিপ্টটি লিখতে হবে। একটি সাধারণ মাউন্ট কমান্ড কাজ করা উচিত। sleep 5
ফাইল সিস্টেমটি শুরু করার জন্য অপেক্ষা করতে আপনার সেখানে কমান্ডের প্রয়োজন হতে পারে (যদি আপনি মূল মাউন্টিংয়ের জন্য জিনোম ছেড়ে যান - তবে আপনি প্রথমে এটি মাউন্ট করতে পারেন এবং তারপরে আপনার ঘুমের দরকার পড়বে না)।
অ্যালান থেকে যুক্ত: দীর্ঘ চলমান স্ক্রিপ্টগুলি "এই বা কোনও নির্ভরযোগ্য ডিভাইসের জন্য আরও সমস্ত ইভেন্ট" অবরুদ্ধ করতে পারে। আমার মিন্ট ম্যান পৃষ্ঠাটিতে আরও বলা হয়েছে "দীর্ঘ চলমান কাজগুলি তত্ক্ষণাত ইভেন্ট প্রক্রিয়া থেকে আলাদা করা দরকার।" এটি করার দক্ষতা কোথায় পাবেন সে সম্পর্কে কোনও টিপ দেওয়া হয়নি।
অলি থেকে জবাব দিন: এটি এর মতো মোড়ানো: https://askubuntu.com/a/106359/449
/root/
বা এমন কোনও জায়গায় রাখুন যেখানে কেবল মূল এটির সম্পাদনা করতে পারে।
এটিটিআরএস {আইডিভেন্ডার} এবং এটিটিআরএস {আইডিপ্রডাক্ট for (উবুন্টু 12.04 এ পরীক্ষিত) এর মান পাওয়ার আরেকটি উপায় হ'ল:
আপনার ইউএসবি কোথায় লাগানো হয়েছে তা সন্ধান করুন:
$ mount | grep /dev/sd*
এটি নিম্নলিখিত মত কিছু দেখায়:
/dev/sdb on /media/SOMEDIR type vfat ...
ডিভাইসটির তথ্য পেতে udevadm ব্যবহার করুন:
udevadm info -q all -n /dev/sdb | grep -E -i -w '.*VENDOR_ID.*|.*MODEL_ID.*'
আউটপুটটি এমন কিছু হওয়া উচিত:
E: ID_MODEL_ID=001a
E: ID_VENDOR_ID=002b
এখন এটিটিআরএস {আইডিপ্রডাক্ট for এর জন্য মডেল আইডি এবং এটিটিআরএস {আইডিভেন্ডার for এর জন্য বিক্রেতার আইডি ব্যবহার করুন
ACTION=="add", ATTRS{idVendor}=="002b", ATTRS{idProduct}=="001a" ...
নটিলাসে সম্পাদনা> পছন্দসমূহ> মিডিয়াতে আপনি "অন্যান্য ক্রিয়া" এবং "কস্টম কমান্ড" এর চেয়ে বেছে নিতে পারেন। বিভিন্ন ধরণের মিডিয়া কার্যকর করার জন্য। ততক্ষণে ইউএসবি ড্রাইভটি ইতিমধ্যে মাউন্ট করা হয়েছে, তবে আমি মনে করি আপনি এখনও এটি (কস্টম কমান্ড সহ) যে ফোল্ডারে ড্রাইভটি উপস্থিত হতে চান তার সাথে যুক্ত করতে পারেন u এটি ইউদেব ব্যবহারের চেয়ে সহজ বা ভাল কিনা তা আমি বলতে পারলাম না।
আপনি যদি নিজের ফাইল ম্যানেজারের (নটিলাস, কনকয়েরার, জিনোম, ইত্যাদি) আপনার ডিভাইসটিকে মাউন্ট এবং আনমাউন্ট করার নিয়ন্ত্রণের সাথে হস্তক্ষেপ না করতে চান, তবে আমি উদেব রুটে না যাওয়ার পরামর্শ দিই।
পরিবর্তে, যদি আপনার সিস্টেমটি ইউডিস্ক ব্যবহার করে (প্রায় সবগুলি করে) তবে ইউডিস্কস-আঠালো ব্যবহার করুন।
ইনস্টল করার পরে, ঠিক ~/.udisks-glue.conf
আপনার হোম ডিরেক্টরিতে একটি কনফিগার ফাইল তৈরি করুন ।
আমার নিম্নলিখিত উদাহরণটি এসডি-কার্ডে প্লাগ ইন করার সময় আমার ক্যামেরায় জিপিএস-সহায়তা ডেটা আপডেট করে।
filter BT16EXTREME {
optical = false
partition_table = false
usage = filesystem
label = BT16EXTREME
}
match BT16EXTREME {
post_mount_command = "/home/bernhard/update-gps-assist-data.pl %mount_point"
}
এরপরে নিশ্চিত হয়ে নিন যে আপনি বুট করার সময় বা লগ ইন করার সময় ইউডিস্কস-আঠা শুরু হয়। অর্থাৎ জিনোমের স্টার্টআপ অ্যাপ্লিকেশনগুলির মাধ্যমে
ইউদেব ব্যবহার করুন
@ সামিদের উত্তরের একটি সমস্যা আছে। আপনার পরিষেবাটি শুরু করা উচিত নয় । আপনার কেবল এটি সক্ষম করা দরকার।
ফাইল: /etc/systemd/system/your.service
[Unit]
Description=My flashdrive script trigger
Requires=media-YourMediaLabel.mount
After=media-YourMediaLabel.mount
[Service]
ExecStart=/any_path_even_inside_the_mount_point/script.sh
[Install]
WantedBy=media-YourMediaLabel.mount
তারপরে পরিষেবাটি সক্ষম করুন:
sudo systemctl enable your.service
এখানেই শেষ.
দ্রষ্টব্য: আপনি এটির সাথে আপনার মধ্যস্থ লেবেলটি খুঁজে পেতে পারেন:sudo systemctl list-units -t mount
দ্রষ্টব্য 2: পরিষেবাটি যদি কোনওভাবে ব্যর্থ হয় (উদাহরণস্বরূপ, স্ক্রিপ্টটি কার্যকরযোগ্য নয়), আপনি <old_mount_point_name>1
পরবর্তী সময় ইউএসবি ডিভাইসটি মাউন্ট করার সময় আপনার মাউন্ট পয়েন্টটি পরিবর্তিত হবে । এই সমস্যাটি সমাধান করার জন্য, আপনাকে কেবল কার্যকর করতে হবেsudo systemctl reset-failed