অ্যামাউন্টে ব্যস্ত ডিভাইস


41

আমি প্রায়শই একটি ডিরেক্টরিকে মূল্য দিতে সমস্যা বোধ করি:

umount / mnt / dir
umount: / mnt / dir: ডিভাইসটি ব্যস্ত

ডিভাইসটি ব্যস্ত থাকার অনেক কারণ রয়েছে। কখনও কখনও এমন প্রক্রিয়াগুলি চলছে যেগুলির উপর খোলা লক রয়েছে, কখনও কখনও উপরে অন্য ডিরেক্টরিগুলি মাউন্ট করা থাকে /mnt/dir

আমার প্রশ্ন:

ডিরেক্টরিটি কেন আনমাউন্ট করা যায়নি তা যাচাই করার পদক্ষেপগুলি কী কী।

আমি জানি যে এর অনেকগুলি কারণ রয়েছে তবে আপনি যদি একটি নির্দিষ্ট সমাধানের ব্যাখ্যা দেন তবে তা ঠিক।

[Edit]

[এক্স] মাউন্ট করা ভলিউমগুলিতে চলমান প্রক্রিয়াগুলি।
[এক্স] অন্য ভলিউম একটি ভলিউমের উপরে মাউন্ট করা হয়েছে যা আমরা আনমাউন্ট করতে চাই
[_] এনএফএস আমরা যে ভলিউমটি আনমাউন্ট করতে চাই না তা লক করে


উত্তর:


76

চেক করার উপায়টি fuser -vm /mnt/dir, যা অবশ্যই রুট হিসাবে চালানো উচিত। এটি আপনাকে জানাবে যে কোন প্রক্রিয়াগুলি মাউন্ট পয়েন্টে অ্যাক্সেস করছে।

একটি বিকল্প হ'ল lsof /mnt/dirএটি মাউন্টের প্রতিটি উন্মুক্ত ফাইল প্রদর্শন করবে। আবার সেরা হিসাবে চালানো।

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

উদাহরণ:

Watt:~# fuser -vm /mnt/Zia/src
                     USER        PID ACCESS COMMAND
/mnt/Zia/src:        root     kernel mount /mnt/Zia/src
                     anthony   24909 ..c.. bash
                     anthony   25041 F.c.. gvim

"অ্যাক্সেস" ক্ষেত্র আপনাকে জানায় যে এটি কীভাবে অ্যাক্সেস করা হচ্ছে। এই ক্ষেত্রে, কার্নেলটি এটি একটি মাউন্ট হিসাবে ব্যবহৃত হয় (দুহ, তবে কেবল এটির সাহায্যে আনমাউন্টটি ঠিক হবে)। bashএটি বর্তমান কার্যক্ষম ডিরেক্টরি হিসাবে রয়েছে ( cdআনমাউন্টের আগে আলাদা ডিরেক্টরিতে হবে) এবং জিভিএম উভয়েরই বর্তমান ডিরেক্টরি রয়েছে এবং একটি ফাইল খোলা আছে (সেই জিভিআইএমটি বন্ধ করতে হবে)।

Watt:~# lsof /mnt/Zia/src
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    24909 anthony  cwd    DIR   0,26    12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim    25041 anthony  cwd    DIR   0,26    12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim    25041 anthony    6u   REG   0,26    16384 3526219 /mnt/Zia/src/perl/.utf8.c.swp (zia.vpn.home:/home/anthony/src)

এই আউটপুটে আপনি বাশ এবং জিভিএম উভয়ের জন্য বর্তমান ডিরেক্টরি দেখতে পাবেন (প্রকার হিসাবে DIR)। Gvim কোন ফাইলটি লেখার জন্য উন্মুক্ত রয়েছে তাও আপনি দেখতে পারেন।

কীভাবে সমস্যাটি জোর করবেন:

fuserমাউন্ট ব্যবহার করে প্রতিটি প্রক্রিয়াতে -kএকটি সিগন্যাল (ডিফল্ট SIGKILL:) প্রেরণ করবে এমন একটি বিকল্প রয়েছে । মাউন্টটি ব্যস্ত হওয়া থেকে থামানোর জন্য এটি একটি শক্তিশালী উপায়। (এবং অবশ্যই, আপনি কি সাবধান SIGKILL!)

umount-lএকটি অলস আনমাউন্ট সঞ্চালনের একটি বিকল্প রয়েছে । ফাইল সিস্টেমের নামস্থান থেকে মাউন্টটি সরানো হবে (সুতরাং আপনি এটি /mnt/Zia/srcআর দেখতে পাবে না, উদাহরণস্বরূপ) তবে এটি মাউন্ট থাকে, সুতরাং এতে অ্যাক্সেস করা প্রোগ্রামগুলি এগুলি চালিয়ে যেতে পারে। এটিতে অ্যাক্সেসের শেষ প্রোগ্রামটি শেষ হয়ে গেলে, আনমাউন্টটি আসলে ঘটবে।

আনমাউন্ট ব্যর্থ হওয়ার একটি চূড়ান্ত স্থির কারণ রয়েছে এবং এটি একটি এনএফএস সার্ভার ডাউন হয়ে যাচ্ছে। এখানে আপনি ব্যবহার করতে পারেন umount -f, তবে আপনি যদি এটি করেন তবে ডেটা ক্ষতি হওয়ার ঝুঁকি রয়েছে। (ক্লায়েন্ট হয়ত এমন লেখাগুলি ক্যাশে করেছে যেগুলি এখনও সার্ভার দ্বারা নিশ্চিত করা হয়নি এবং সেই লেখাগুলি বাতিল করা হবে Apps তবে, অ্যাপ্লিকেশনগুলি ইতিমধ্যে লিখিতভাবে সফল হয়েছে বলে জানানো হয়েছে))


4
লক্ষ্য করুন fuser -kহয় অত্যন্ত ঝুঁকিপূর্ণ, যেমন আপনি এটা রুট হিসাবে কাজ করব এবং যদি আপনি না হন খুব নিশ্চিত যার প্রসেস হত্যা করা হবে বন্ধ আপনি একটি উদ্বেগহীন আদেশের সঙ্গে সত্যিই দর্শনীয় ক্ষতি করতে পারি না ...
Shadur

1
@ শাদুর ভাল, আশা করি আপনি ইতিমধ্যে -kবিকল্পটি ছাড়াই এটি চালিয়েছেন , তাই আপনি জানতে পারবেন আপনি কোন প্রক্রিয়াটি মেরে ফেলছেন । তবে আমি একটি সতর্কতা যুক্ত করব।
ডারোবার্ট

1
fuser -vm"কার্নেল মাউন্ট" দেখিয়েছে। systemctl stop opt.mountম্যানুয়াল পরিবর্তে করতে হয়েছিল umount
lkraav

2
কিছু কারণে umount -f আমার পক্ষে কাজ করে না তবে umount -l চালানো পুরোপুরি কার্যকর হয়।
ফিরজ

সম্পর্কে umount -fএবং এনএফএস এর নোটের জন্য ধন্যবাদ । আমার ইস্যুটি এনএফএস সম্পর্কিত ছিল যেখানে আমার ডেভ মেশিনগুলি আইপি পরিবর্তন করেছে এবং আমি ভাগটি সরাতে পারি না।
এরিক

19

আপনার ব্যবহার করা উচিত:

sudo umount -l <path>

7
এবং, আমি নির্বোধ ব্যক্তি এটি কমে যেতে পারে কি কোন ধারণা আছে। -lঠিক ব্যবহার করতে যখন এমনকি বিকল্প -fকাজ করে না।
হাই-এঞ্জেল

@ হাই-অ্যাঞ্জেল কারণ ওপি এটি জিজ্ঞাসা করছে না?
xhienne

@ শেইন স্ট্যাক এক্সচেঞ্জ কেবল জড়িত বটের মতো কোনও প্রশ্নের উত্তর দেওয়া নয়, এই উত্তরটি সহায়ক। গুগল অনুসন্ধান থেকেও অনেক লোক আসে। আমি ব্যক্তিগতভাবে এটি সহায়ক বলে মনে করেছি। অপশন শোডল উত্তরটি গ্রহণ করে যা সে প্রাসঙ্গিকভাবে খুঁজে পায় কেন গ্রহণযোগ্য বোতামটি সেখানে রয়েছে।
ব্যবহারকারী 1735921

6

আরেকটি ভলিউম একটি ভলিউমের উপরে মাউন্ট করা হয়েছে যা আমরা আনমাউন্ট করতে চাই:

mountআর্গুমেন্ট বা বিকল্পগুলি ছাড়া (যদি বাদে -v) ডাক দেওয়া হয় তবে কমান্ডটি আপনাকে সমস্ত মাউন্ট ভলিউম জানতে দেয় । কিছুটা পার্ল যোগ করে আপনার সক্রিয় মাউন্টপয়েন্টগুলির একটি তালিকা থাকতে পারে:

mount | perl -pe 's/.*on (\S+) type.*/\1/'

তারপরে, আপনি যে মাইনপয়েন্টটি থেকে আনমাউন্ট করতে চান তা কেবল গ্রেপ করুন এবং আপনি জানতে পারবেন যে এটির উপরে মাউন্ট করা ফাইল সিস্টেম রয়েছে কিনা।

mount | perl -pe 's/.*on (\S+) type.*/\1/' | grep '/mnt/dir/'

তারপরে আপনার দুটি সমাধান রয়েছে । হয় ফাইল সিস্টেমগুলি আনমাউন্ট করুন, বা তাদের সাথে সরান mount --move olddir newdir(কার্নেল> 2.5.1)


1
হ্যা ধন্যবাদ. / etc / mtab এবং / proc / মাউন্টগুলিও সম্ভব।

আহ ঠিক আছে, আমি সবসময় তাদের ভুলে গিয়েছিলাম। ধরা যাক যে "মাউন্ট" টাইপ করার জন্য কম অক্ষর প্রয়োজন (তবে চালানোর জন্য আরও সংস্থান রয়েছে?)
মভারওয়ুন

1
আমার ল্যাপটপের একটি নির্দিষ্ট ডিরেক্টরিতে "স্থায়ীভাবে" মাউন্ট করা একটি বাহ্যিক ইউএসবি স্টোরেজ ডিভাইস রয়েছে, কখনও কখনও ভুলক্রমে তারটি সংযোগ বিচ্ছিন্ন হয়ে যায়। আমি এই উত্তরটি না পড়া পর্যন্ত ডিরেক্টরিতে ("ডিভাইস ব্যস্ততার কারণে") ডিভাইসটিকে পুনরায় মাউন্ট করতে একটি বড় ব্যথা হয়েছিল। এখন আমি মাউন্ট --move olddir newdir ব্যবহার করতে পারি। ধন্যবাদ।
সিলভিও লেভি

3

ফাইল খুলুন

খোলা ফাইল সহ প্রক্রিয়াগুলি হ'ল স্বাভাবিক অপরাধী। তাদের প্রদর্শন করুন:

lsof +f -- <mountpoint or device>

এর /dev/<device>পরিবর্তে ব্যবহার করার একটি সুবিধা রয়েছে /mountpoint: এর পরে একটি মাউন্টপয়েন্ট অদৃশ্য হয়ে যাবে umount -l, বা এটি কোনও আচ্ছাদিত মাউন্ট দ্বারা আড়াল হতে পারে।

fuserএছাড়াও ব্যবহার করা যেতে পারে, তবে আমার মনে lsofআরও কার্যকর আউটপুট রয়েছে। তবে fuserএটি কার্যকর যখন আপনার নাটকগুলির জন্য প্রক্রিয়াগুলি হত্যার বিষয়টি আসে যাতে আপনি আপনার জীবন নিয়ে যেতে পারেন।

ফাইলগুলি তালিকাভুক্ত করুন <mountpoint>(উপরের ক্যাভিয়েট দেখুন):

fuser -vmM <mountpoint>

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

fuser -vmMkiw <mountpoint>

কেবল পঠনযোগ্য ( mount -o remount,ro <mountpoint>) পুনরায় মাউন্ট করার পরে , অবশিষ্ট সমস্ত প্রক্রিয়াটি মেরে ফেলা নিরাপদ (র):

fuser -vmMk <mountpoint>

Mountpoints

অপরাধী নিজেই কর্নেল হতে পারে। আপনি যে ফাইল সিস্টেমে চেষ্টা করছেন সেটি মাউন্ট করা অন্য একটি ফাইল সিস্টেম umountশোকের কারণ ঘটবে। পরিক্ষা কর:

mount | grep <mountpoint>/

লুপব্যাক মাউন্টগুলির জন্য, এর আউটপুটও পরীক্ষা করে দেখুন:

losetup -la

নামবিহীন ইনোডস (লিনাক্স)

বেনামে আইওডগুলি তৈরি করতে পারে:

  • অস্থায়ী ফাইল ( openসহ O_TMPFILE)
  • ঘড়ি inotify
  • [Eventfd]
  • [Eventpoll]
  • [Timerfd]

এই পোকেমন অধিকাংশ অধরা ধরনের হয়, এবং প্রদর্শিত lsof'র TYPEহিসাবে কলাম a_inode(যেখানে অনথিভুক্ত হয় lsofman পৃষ্ঠা )।

এগুলি উপস্থিত হবে না lsof +f -- /dev/<device>, সুতরাং আপনার প্রয়োজন হবে:

lsof | grep a_inode

বেনামে আইওনড ধারণ করে হত্যা করার প্রক্রিয়াগুলির জন্য দেখুন: বর্তমান ইনোটিফাই ঘড়ির তালিকা করুন (পথের নাম, পিআইডি)


1

এনএফএস আনমাউন্ট হতে চলেছে এমন কোনও ডিরেক্টরি অ্যাক্সেস করে কিনা তা পরীক্ষা করে দেখুন কীভাবে?

আমার যা আছে তা কেবল এটি:

এনএফএসডি চলছে কিনা তা পরীক্ষা করুন:

pidof nfsd

ক্লায়েন্টদের দ্বারা মাউন্ট করা ডিরেক্টরিগুলি দেখান:

showmount -a

এবং showmountডাব্লু / ও যুক্তিগুলি ক্লায়েন্ট হোস্টগুলি লাইন বন্ধ থাকলেও প্রদর্শন করে। আমি ধরে নিলাম এটি এনএফএসের একটি বিশেষ আচরণ।


1

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

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