একটি ব্যস্ত ডিভাইসটি কীভাবে আনমাউন্ট করবেন


244

আমি কিছু সাম্বা ড্রাইভ পেয়েছি যা প্রতিদিন একাধিক ব্যবহারকারীর দ্বারা অ্যাক্সেস করা হয়। আমার কাছে ইতিমধ্যে ভাগ করা ড্রাইভগুলি সনাক্ত করার কোড রয়েছে (এসকিউএল টেবিল থেকে) এবং এগুলি একটি বিশেষ ডিরেক্টরিতে মাউন্ট করতে যেখানে সমস্ত ব্যবহারকারী তাদের অ্যাক্সেস করতে পারে।

আমি জানতে চাই, আমি যদি আমার এসকিউএল টেবিল থেকে কোনও ড্রাইভ সরিয়ে ফেলি (কার্যকরভাবে এটি অফলাইনে নিয়ে যাচ্ছি) কীভাবে বা এমন কি কোনও ব্যস্ত ডিভাইসটিকে আনমাউন্ট করার উপায় আছে? এখনও অবধি আমি খুঁজে পেয়েছি যে কোনও রূপই umountকাজ করে না।

ডেটা ধ্বংস করার সম্ভাবনা উপেক্ষা করে - বর্তমানে যে ডিভাইসটি পড়া হচ্ছে তা আনমাউন্ট করা সম্ভব?


3
ব্যর্থতার পরিমাণ আরও বেশি হওয়ার জন্য আরও সাধারণ উত্তর পাওয়া যাবে oletange.blogspot.dk/2012/04/umount-device-is-busy-why.html
ওলে

2
হ্যালো, সম্ভবত আপনি cdমাউন্ট লাগিয়েছেন, তারপরে আপনি রুট হয়ে উঠলেন বা আবার লগইন করুন তারপরে অন্য শেলটি আটকা পড়ে। কি exitসব শাঁস উপর।
স্মিটারলিংক

উত্তর:


456

হ্যাঁ!! একটি ব্যস্ত ডিভাইসটি তাত্ক্ষণিকভাবে বিচ্ছিন্ন করার একটি উপায় রয়েছে (যদিও এটি ব্যস্ত থাকে এবং জোর করে আনমাউন্ট করা যায় না)। আপনি পরে সমস্ত পরিষ্কার করতে পারেন:

umount -l /PATH/OF/BUSY-DEVICE
umount -f /PATH/OF/BUSY-NFS(NETWORK-FILE-SYSTEM)

বিঃদ্রঃ:

  1. এই কমান্ডগুলি একটি চলমান প্রক্রিয়া ব্যাহত করতে পারে, ডেটা হারাতে বা ফাইলগুলিকে দূষিত করতে পারে। DEVICE / NFS ফাইলগুলিতে লক্ষ্যযুক্ত অ্যাক্সেস প্রোগ্রামগুলি ত্রুটি ফেলতে পারে বা জোর করে আনমাউন্ট করার পরে সঠিকভাবে কাজ করতে পারে না।
  2. ফোল্ডার / ড্রাইভ / ডিভাইস মাউন্ট না থাকা অবস্থায় এই কমান্ডগুলি কার্যকর করার চেষ্টা করুন।

22
দ্রষ্টব্য: -lএখানে একটি ছোট হাতের অক্ষর রয়েছে L("অলস আনমাউন্টিংয়ের জন্য")। ( এই সম্পর্কিত উত্তর দেখুন ।)
ョ ー ジ

4
কাজ করছে. একটি বিষয়, আপনি যদি এফটিপি ক্লায়েন্টের মাধ্যমে লগ ইন করেন তবে ফোল্ডারটি সাফল্যের সাথে আনমাউন্ট করার জন্য আপনাকে লগআউট করতে হবে।
আলেকজান্ডার কিম

তারা কাজ করে না। তারা উভয়ই চিরকাল স্থায়ী। (ডেবিয়ান 8, CIFS-utils 2: 6.4-1)
Hubro

1
-l/ --lazyখোলা ফাইলগুলিকে দুর্নীতিগ্রস্থ করবে না, তবে লিনাক্সে দেখে মনে হচ্ছে ডিভাইসটি কখন আনমাউন্ট হয় এবং সরানো যেতে পারে
টম হেল

1
কিন্ডা ভয়ের। কিছু অন্যান্য প্রক্রিয়া এখনও এটি অ্যাক্সেস করার সময় আমি অলস-আনমাউন্ট না হয়ে পুনঃসমাজিত হয়েছি। সুতরাং আমি অনুমান করি যে আমি একই জায়গায় দু'বার মাউন্ট করেছি? নিশ্চিত যে নিশ্চিত কি।
sudo

120

যদি সম্ভব হয় তবে আসুন প্রক্রিয়াটি ব্যস্তটিকে চিহ্নিত করুন / চিহ্নিত করুন, প্রক্রিয়াটি মেরে ফেলুন এবং তারপরে ক্ষয়টি হ্রাস করতে সাম্বা ভাগটিকে আনমাউন্ট করুন।

  • lsof | grep '<mountpoint of /dev/sda1>' (বা মাউন্ট করা ডিভাইস যাই হোক না কেন)

  • pkill target_process(নামেই ব্যস্ত প্রোককে হত্যা করে | kill PID| killall target_process)

  • umount /dev/sda1 (বা মাউন্ট করা ডিভাইস যাই হোক না কেন)


6
যে কিছুই ফেরায় না। আমি এটি ধরে নিচ্ছি কারণ এটি একটি নেটওয়ার্ক ড্রাইভ এবং আমি অন্য কম্পিউটারগুলির ড্রাইভ অ্যাক্সেস করার প্রক্রিয়া দেখতে পাচ্ছি না। "ফুসার" কমান্ডের সাথে একই চুক্তি।
সর্বোচ্চ

ওহে জাহান্নাম ... আপনার সাম্বা কমান্ডগুলি দরকার ... / usr / bin / smbclient পরিষেবা <পাসওয়ার্ড>: দেখুন এটি আপনি শুরু করেন কিনা
ফ্র্যাঙ্ক

2
এসএমএম কমান্ডগুলি আসলে "umount.cifs" দ্বারা অবচিত ও প্রতিস্থাপন করা হয়েছে .... যা কাজ করে না। দেখা যাচ্ছে যে আমি ব্যস্ত থাকাকালীন অ্যাকাউন্ট চালাতে সক্ষম না হয়ে আটকে আছি।
সর্বোচ্চ

আপনি যদি আসুসওয়ার্ট-মের্লিন ব্যবহার করছেন তবে আপনাকে ইনস্টল করতে হবে lsof:# opkg install lsof
টোনাতিও

1
আপনাকে কিছু ফলাফল পেতে
সুদো দরকার

78

আপনি যখন মাউন্ট করার চেষ্টা করছেন তখন নিশ্চিত হয়ে নিন যে আপনি এখনও মাউন্ট করা ডিভাইসে নেই।


4
ঠিক ঠিক, আপনার টার্মিনালে কেবল বর্তমান ফোল্ডারটি (টার্গেট ডিভাইসে অবস্থিত) খোলা থাকা (উদাহরণস্বরূপ সিডি কমান্ডের মাধ্যমে) অনাদায়ী প্রক্রিয়াটি বন্ধ করতে হাহাকার করছে :)
jave.web

2
হ্যাঁ, আমার ডিভাইসে একটি ডিরেক্টরিতে একটি শেল চলছিল। টার্মিনাল উইন্ডো এবং voila বন্ধ
sh78

এছাড়াও, নিশ্চিত হয়ে নিন যে আপনি চেষ্টা করছেন তার ভিতরে অন্য কোনও মাউন্ট পয়েন্ট নেই umount
victe

@ উইকেট ধন্যবাদ; আমি সোলারিস 11-তে pfexec মাউন্ট-এফ vboxfs কার্পেট্যাকম্পার্টিদা ~ / ডকুমেন্টস ব্যবহার করে একটি ফোল্ডার মাউন্ট করছিলাম; তবে ডকুমেন্টগুলির সাবফোল্ডার ছিল এবং এটি ছিল সমস্যা।
দানি আয়া

44

নিম্নলিখিতগুলি ব্যবহার করে দেখুন, তবে এটি চালানোর আগে লক্ষ্য করুন যে -kপতাকাটি ডিভাইসকে ব্যস্ত রেখে কোন চলমান প্রক্রিয়াটিকে হত্যা করবে।

-iপতাকা তোলে fuserহত্যা করার আগে জিজ্ঞাসা করুন।

fuser -kim /address  # kill any processes accessing file
unmount /address

5
lsof | grep '/dev/<my-device>কিছুই ফেরেনি, তবে এটি দুর্দান্ত কাজ করে! fuser -m /dev/<my-device>প্রক্রিয়াটি হত্যার আগে আপনি এটি সন্ধান করতে চান এমন ক্ষেত্রেও পরামর্শ দিতে চাই।
Modulitos

3
ফুজার কমান্ডটি চালানো সঙ্গে সঙ্গে আমাকে ভিপিএস থেকে সংযোগ বিচ্ছিন্ন করে।
giorgio79

21

এড়াতে umount -l

লেখার সময়, শীর্ষ-ভোট প্রাপ্ত উত্তরগুলি ব্যবহারের পরামর্শ দেয় umount -l

umount -lবিপজ্জনক বা সেরা অনিরাপদ । সংক্ষেপে:

  • এটি আসলে ডিভাইসটিকে আনমাউন্ট করে না, এটি কেবল নামস্থান থেকে ফাইল সিস্টেমটি সরিয়ে দেয়। ফাইল খুলতে লেখার কাজ চালিয়ে যেতে পারে।
  • এটি বিটিআরএফএস ফাইল সিস্টেমের দুর্নীতির কারণ হতে পারে

আশেপাশে / বিকল্প কাজ

এর দরকারী আচরণ umount -lদ্বারা অ্যাক্সেস থেকে ফাইলসিস্টেম লুকিয়ে আছে পরম pathnames ফলে আরও moutpoint ব্যবহার কমানোর।

ডিরেক্টরিটি মাউন্ট করার অনুমতি ছাড়াই একটি খালি ডিরেক্টরি মাউন্ট করে এই একই আচরণ অর্জন করা 000যেতে পারে।

তারপরে মাউন্টপয়েন্টের নীচে ফাইলের নামের কোনও নতুন অ্যাক্সেস শূন্য অনুমতি নিয়ে নতুন ওভারলেড ডিরেক্টরিতে আঘাত করবে - আনমাউন্টে থাকা নতুন ব্লকারকে এর ফলে বাধা দেওয়া হবে।

প্রথমে চেষ্টা করুন remount,ro

আনলক হওয়ার জন্য বড় আনমাউন্ট প্রাপ্তিটি হ'ল কেবল পঠনযোগ্য রিমাউন্ট। আপনি যখন remount,roব্যাজটি অর্জন করবেন তখন আপনি তা জানেন:

  1. সমস্ত মুলতুবি থাকা ডেটা ডিস্কে লেখা হয়েছে
  2. ভবিষ্যতের সমস্ত লেখার প্রচেষ্টা ব্যর্থ হবে
  3. ডেটাটি সামঞ্জস্যপূর্ণ অবস্থায় রয়েছে, আপনার কি ডিভাইসটি শারীরিকভাবে সংযোগ বিচ্ছিন্ন করা উচিত।

mount -o remount,ro /dev/device লেখার জন্য ফাইলগুলি খোলা থাকলে ব্যর্থ হওয়ার গ্যারান্টিযুক্ত , তাই সরাসরি চেষ্টা করুন। আপনি নিজেকে ভাগ্যবান বোধ করছেন, পাঙ্ক!

আপনি যদি দুর্ভাগ্য হন তবে কেবল লেখার জন্য উন্মুক্ত ফাইলগুলি সহ প্রক্রিয়াগুলিতে ফোকাস করুন :

lsof +f -- /dev/<devicename> | awk 'NR==1 || $4~/[0-9]+[uw -]/'

তারপরে আপনার কেবলমাত্র পঠনযোগ্য ডিভাইসটিকে পুনরায় গণনা করতে এবং একটি সামঞ্জস্যপূর্ণ অবস্থা নিশ্চিত করতে সক্ষম হওয়া উচিত।

আপনি যদি কেবলমাত্র এই সময়ে পঠনযোগ্য পুনরায় গণনা করতে না পারেন তবে এখানে তালিকাভুক্ত অন্যান্য সম্ভাব্য কয়েকটি কারণ অনুসন্ধান করুন

কেবল পঠনযোগ্য পুনরায় মাউন্ট কৃতিত্ব আনলক 🔓☑

অভিনন্দন, মাউন্টপয়েন্টে আপনার ডেটা এখন সামঞ্জস্যপূর্ণ এবং ভবিষ্যতের লেখা থেকে সুরক্ষিত।

fuserনিকৃষ্ট কেন হয়lsof

কেন fuserআগে ব্যবহার ব্যবহার করবেন না ? ঠিক আছে, তবে আপনি fuserকোনও ডিরেক্টরিতে চালিত করতে পারেন, কোনও ডিভাইস নয় , সুতরাং যদি আপনি ফাইলের নাম স্থান থেকে মাউন্টপয়েন্টটি সরিয়ে রাখতে চান এবং ব্যবহার fuserকরতে চান তবে আপনার প্রয়োজন:

  1. mount -o bind /media/hdd /mntঅন্য স্থানে অস্থায়ীভাবে মাউন্টপয়েন্টটি সদৃশ করুন
  2. মূল মাউন্ট পয়েন্টটি লুকান এবং নেমস্পেসটি ব্লক করুন:

এখানে কীভাবে:

null_dir=$(sudo mktemp --directory --tmpdir empty.XXXXX")
sudo chmod 000 "$null_dir"

# A request to remount,ro will fail on a `-o bind,ro` duplicate if there are
# still files open for writing on the original as each mounted instance is
# checked.  https://unix.stackexchange.com/a/386570/143394
# So, avoid remount, and bind mount instead:
sudo mount -o bind,ro "$original" "$original_duplicate"

# Don't propagate/mirror the empty directory just about hide the original
sudo mount --make-private "$original_duplicate"

# Hide the original mountpoint
sudo mount -o bind,ro "$null_dir" "$original"

আপনার তখন থাকতে হবে:

  1. আসল নেমস্পেস লুকানো (কোনও ফাইল আর খুলতে পারে না, সমস্যা আরও খারাপ হতে পারে না)
  2. একটি নকল বাঁধার মাউন্ট ডিরেক্টরি (কোনও ডিভাইসের বিপরীতে) চালানো হবে fuser

এটি আরও সংশ্লেষিত [1] তবে এটি আপনাকে ব্যবহার করতে দেয়:

fuser -vmMkiw <mountpoint>

যা ইন্টারেক্টিভভাবে লেখার জন্য উন্মুক্ত ফাইলগুলি সহ প্রক্রিয়াগুলিকে হত্যা করতে বলবে। অবশ্যই, আপনি মাউন্ট পয়েন্টটি আড়াল না করে এটি করতে পারেন তবে উপরের নকলগুলিumount -l , কোনও বিপদ ছাড়াই।

-wপ্রসেস লেখা সুইচ পরিমিত, এবং -iশুধুমাত্র পাঠযোগ্য পুনরারোহণ ইন্টারঅ্যাকটিভ, তাই একটি পর যদি আপনি এটি তাড়ার তারপর আপনি ব্যবহার করতে পারে করছি:

fuser -vmMk <mountpoint>

মাউন্টপয়েন্টের নীচে খোলা ফাইলগুলির সাথে বাকী সমস্ত প্রক্রিয়া মেরে ফেলতে।

আশা করি এই মুহুর্তে, আপনি ডিভাইসটি আনমাউন্ট করতে পারবেন। (আপনি umountযদি 000উপরে একটি মোড ডিরেক্টরি বাঁধেন তবে আপনাকে দুবার মাউন্টপয়েন্টে দৌড়াতে হবে ))

বা ব্যবহার করুন:

fuser -vmMki <mountpoint>

ইন্টারঅ্যাকটিভভাবে বাকী কেবল পঠনযোগ্য প্রক্রিয়াগুলি আনমাউন্টটিকে অবরুদ্ধ করে হত্যা করতে।

দাম্মিত, আমি এখনও পাই target is busy!

খোলা ফাইলগুলি কেবলমাত্র আনমাউন্ট ব্লকার নয়। দেখুন এখানে এবং এখানেঅন্যান্য কারণ এবং তাদের প্রতিকারের জন্য ।

এমনকি যদি আপনার কাছে কিছু লুকানো গ্রিমলিন পাওয়া যায় যা আপনাকে ডিভাইসটিকে সম্পূর্ণরূপে আনমাউন্ট করা থেকে বিরত রাখে তবে কমপক্ষে আপনার ফাইল সিস্টেমটি একটি সামঞ্জস্যপূর্ণ অবস্থায় পেয়েছেন।

তারপরে আপনি lsof +f -- /dev/deviceফাইল সিস্টেমের সাথে থাকা ডিভাইসে খোলা ফাইলগুলির সাথে সমস্ত প্রক্রিয়া তালিকাভুক্ত করতে এবং তারপরে তাদের হত্যা করতে পারেন।


[1] এটি ব্যবহারের জন্য কম সংশ্লেষিত mount --moveতবে এটির জন্য mount --make-private /parent-mount-pointযা বোঝা যায় । মূলত, যদি মাউন্টপয়েন্টটি /ফাইল সিস্টেমে মাউন্ট করা হয় তবে আপনি এড়াতে চাইবেন।


1
যদি --lazyএত বিপজ্জনক হয় তবে কেন umountম্যান পেজে সতর্কতার মতো এত কিছু নেই ? এটি যা বলে তা হ'ল " অলস আনমাউন্ট। এখনই ফাইলক্রমক্রম থেকে ফাইল সিস্টেমটি আলাদা করুন এবং আর ব্যস্ত না হওয়ার সাথে সাথে এই ফাইল সিস্টেমের সমস্ত রেফারেন্সগুলি সাফ করুন " "
বিটাইনরেন্ট

7

এক্সপোর্টফেস -v সহ রফতানি করা এনএফএস ফাইল সিস্টেমের জন্য পরীক্ষা করুন। যদি পাওয়া যায়, এক্সপোর্টএফ-ডি শেয়ার: / ডিরেক্টরি সহ সরান। এগুলি ফুসার / এলএসফের তালিকায় প্রদর্শিত হয় না এবং এটি সফলতা থেকে রোধ করতে পারে।


1
এই পরামর্শের জন্য ধন্যবাদ। লকটি অপসারণ করতে আমাকে এক্সপোর্টফেস ব্যবহার করতে হয়েছিল।
FuePi

6

চেক আউট umount2:

লিনাক্স ২.১.১16 umount2 () সিস্টেম কল যুক্ত করেছে, যা umount () এর মতো একটি লক্ষ্য আনমেট করে, তবে অপারেশনটির আচরণ নিয়ন্ত্রণকারী অতিরিক্ত পতাকাগুলির অনুমতি দেয়:

MNT_FORCE (লিনাক্স 2.1.116 থেকে) ব্যস্ত থাকলেও আনমাউন্টটি বাধ্য করুন। (কেবলমাত্র এনএফএস মাউন্টগুলির জন্য।) এমএনT_ডেটচ (লিনাক্স ২.৪.১১ থেকে) একটি অলস আনমাউন্ট সম্পাদন করুন: নতুন অ্যাক্সেসের জন্য মাউন্ট পয়েন্টটি অনুপলব্ধ করে দিন এবং যখন মাউন্ট পয়েন্ট ব্যস্ত থাকা বন্ধ করে দেয় তখন বাস্তবে আনমাউন্টটি সম্পাদন করুন। MNT_EXPIRE (লিনাক্স ২.6.৮ থেকে) মাউন্ট পয়েন্টটি মেয়াদোত্তীর্ণ হিসাবে চিহ্নিত করুন। যদি কোনও মাউন্ট পয়েন্ট বর্তমানে ব্যবহারে না থাকে, তবে এই পতাকা সহ umount2 () এর একটি প্রাথমিক কল ত্রুটি EAGAIN এর সাথে ব্যর্থ হয়, তবে মাউন্ট পয়েন্টটিকে মেয়াদ উত্তীর্ণ হিসাবে চিহ্নিত করে। কোনও প্রক্রিয়া দ্বারা অ্যাক্সেস না করা অবধি মাউন্ট পয়েন্টটি মেয়াদ শেষ হয়ে যায় remains MNT_EXPIRE একটি মেয়াদোত্তীর্ণ মাউন্ট পয়েন্ট আনমাউন্ট করে উল্লেখ করে একটি দ্বিতীয় umount2 () কল। এই পতাকাটি MNT_FORCE বা MNT_DETach এর সাথে নির্দিষ্ট করা যাবে না। ফেরত মূল্য

সাফল্যে, শূন্য ফিরে আসে। ত্রুটিতে, -1 ফিরিয়ে দেওয়া হয়, এবং ভুলটি সঠিকভাবে সেট করা থাকে।


দুর্ভাগ্যক্রমে এগুলি এনএফএস মাউন্টগুলি নয়, তবে সিআইএফএস। আমি যদিও চেষ্টা করব MNT_DETach। তবে যদি অমাউন্ট-এল কাজ না করে তবে আমি কল্পনা করতে পারি না এটি অনেক আলাদা। ধন্যবাদ যদিও!
সর্বোচ্চ

2

কেউ উল্লেখ করেছে যে আপনি যদি টার্মিনাল ব্যবহার করছেন এবং আপনার বর্তমান ডিরেক্টরি যদি আপনি আনমাউন্ট করতে চান সেই পথের ভিতরে থাকে তবে আপনি ত্রুটি পাবেন।
পরিপূরক হিসাবে, এক্ষেত্রে আপনার lsof | grep path-to-be-unmountedঅবশ্যই আউটপুট নীচে থাকতে হবে:

bash ... path-to-be-unmounted

1

অন্য কোনও বিকল্প যখন কাজ করে তখন সম্পাদনা করা /etc/fstab, noautoপতাকা যুক্ত করা এবং মেশিনটি রিবুট করা। ডিভাইসটি মাউন্ট করা হবে না এবং আপনি যখনই কিছু করা শেষ করেন তখন পতাকাটি সরিয়ে আবার রিবুট করুন।


0

आला উত্তর:

যদি সেই ডিভাইসে আপনার কাছে zfs পুল থাকে, কমপক্ষে যখন এটি ফাইল-ভিত্তিক পুল হয় lsofতবে ব্যবহারটি দেখাবে না। তবে আপনি কেবল চালাতে পারেন

sudo zpool export mypoo

এবং তারপর আনমাউন্ট।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.