umount - ডিভাইস ব্যস্ত


14

কখনও কখনও যখন আমি কোনও ডিভাইস আনমাউন্ট করতে চাই, যেমন

sudo umount /dev/loop0

আমি ম্যাসেজ পাব

umount: /mnt: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

আমি সাধারণত এই সমস্যাটি কনসোল উইন্ডোটি বন্ধ করে (আমার ক্ষেত্রে xfce4- টার্মিনালে) এবং তারপরে সমাধান করি umount

এই সমস্যাটির অর্থ কী? কিছু চতুর সমাধান আছে?


2
উদাহরণস্বরূপ এটি ঘটে যদি আপনি এখনও সেই ডিরেক্টরিতে কোনও শেল থেকে থাকেন যেখানে ডিভাইসটি মাউন্ট করা আছে।
klapaucius

আমি সেখানে ছিলাম কিনা তা মনে নেই তবে আমি চেষ্টা করেছিলাম এবং আপনি ঠিক বলেছেন, এটি ঘটেছিল।
xralf

উত্তর:


14

এর অর্থ হ'ল কিছু প্রক্রিয়াটির মাউন্ট পয়েন্টের নীচে একটি ওয়ার্কিং ডিরেক্টরি বা একটি খোলা ফাইল হ্যান্ডেল রয়েছে। আপত্তিজনক প্রক্রিয়াটি শেষ করা, তার কার্যকরী ডিরেক্টরিটি পরিবর্তন করা বা আনমাউন্ট করার আগে ফাইল হ্যান্ডেলটি বন্ধ করা সেরা কাজটি হ'ল।

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


2
কোন প্রক্রিয়াটির ওপেন ফাইল হ্যান্ডেল রয়েছে এবং এটি বন্ধ করা উচিত তা খুঁজে পাওয়ার কোনও উপায় কি?
xralf

4
ব্যবহার lsofকরা সম্ভবত সেরা উপায়।
বাহামত

1
যেমন lsof | grep loop0?
xralf

না, মাউন্ট পয়েন্টের জন্য গ্রেপ। এটি নীচে যে কোনও ফাইল তালিকাভুক্ত করা উচিত। আমি মনে করি না যে এটি এমন জিনিসগুলি প্রদর্শন করবে যা মাউন্ট পয়েন্টের নীচে কেবল একটি ডিরেক্টরি ডিরেক্টরি থাকে, সুতরাং এটি কোনও সঠিক পদ্ধতি নয়।
বাহামত

7

আপনি fuserমাউন্ট করা ফাইল সিস্টেমটি ব্যবহার করে সমস্ত প্রক্রিয়া হ্রাস করতেও ব্যবহার করতে পারেন ।

fuser -cuk /mnt

বিকল্প:

-c     
    Same as -m option, used for POSIX compatibility.

-u, --user
    Append the user name of the process owner to each PID.

-k, --kill
    Kill  processes accessing the file. Unless changed with -SIGNAL, SIGKILL is sent. An fuser process
    never kills itself, but may kill other fuser processes. The  effective  user  ID  of  the  process
    executing fuser is set to its real user ID before attempting to kill.kill.

-m NAME, --mount NAME
    NAME specifies a file on a mounted file system or a block device that is  mounted.  All  processes
    accessing  files  on  that  file  system  are  listed.   If  a  directory file is specified, it is
    automatically changed to NAME/. to use any file system that might be mounted on that directory.

নিজেকে ব্যাখ্যা করে দেখুন


3

আপনার "সাধারণ সমাধান" দেওয়া, এর অর্থ হ'ল আপনি আপনার কনসোল উইন্ডোতে যে শেলটি চালাচ্ছেন তার সেই ডিভাইসের একটি ফাইল সিস্টেমে বর্তমান চলমান ডিরেক্টরি হিসাবে একটি ডিরেক্টরি রয়েছে।

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

আপনি cdকনসোল উইন্ডোটি কনসোল উইন্ডোটি /mntমারা না করে এবং এর ভিতরে চালিত শেল্টটি বাদ দেওয়ার পরিবর্তে ডিরেক্টরি থেকে বেরিয়ে যাওয়ার জন্য ব্যবহার করতে পারেন use


0

আমি এমন একটি পরিস্থিতি আবিষ্কার করেছি যা একটি ডিভাইসটিকে আনমাউন্ট করার ক্ষেত্রে হস্তক্ষেপ করতে পারে যা আমি উত্তর হিসাবে ভাগ করে নেব যদিও এই প্রশ্নটি অনেক পুরানো।

আপনার যদি মেশিনে এনএফএস শেয়ার হোস্ট করা থাকে এবং আপনি যে এনএফএস শেয়ারগুলি আনমাউন্ট করার চেষ্টা করছেন সেই ডিভাইসটি সমর্থন করে তবে আপনাকে সেগুলি ভাগ করে নেওয়া বন্ধ করতে হবে (এনএফএস পরিষেবা বন্ধ করে সেরা করা হবে, যেমন sudo service nfs-kernel-server stopউবুন্টুর সাম্প্রতিক সংস্করণগুলিতে )। এনএফএস সার্ভারটি lsof বা fuser এ প্রদর্শিত না হতে পারে, যা সমস্যাটি সনাক্ত করতে অসুবিধে করতে পারে।

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