কখনও কখনও, আমি একটি আন-মাউন্ট করা চাই USB ডিভাইস সঙ্গে umount /run/media/theDrive, কিন্তু আমি একটি পেতে drive is busyত্রুটি।
কোন প্রক্রিয়া বা প্রোগ্রামগুলি ডিভাইসে অ্যাক্সেস করছে তা আমি কীভাবে জানতে পারি?
কখনও কখনও, আমি একটি আন-মাউন্ট করা চাই USB ডিভাইস সঙ্গে umount /run/media/theDrive, কিন্তু আমি একটি পেতে drive is busyত্রুটি।
কোন প্রক্রিয়া বা প্রোগ্রামগুলি ডিভাইসে অ্যাক্সেস করছে তা আমি কীভাবে জানতে পারি?
উত্তর:
ব্যবহার করুন lsof | grep /media/whateverকি মাউন্ট ব্যবহার করছে খুঁজে বের করতে।
এছাড়াও, umount -lপরিষ্কার করার সময় ড্রাইভটি ব্যবহার করা থেকে নতুন প্রক্রিয়াগুলি রোধ করতে (অলস অমাউন্ট) বিবেচনা করুন ।
fuser -mv /path/to/mountpointএকটি মাইপয়েন্ট পয়েন্ট ব্যবহার করে প্রক্রিয়াগুলি সন্ধানের জন্য আরও পঠনযোগ্য বিকল্প হতে পারে।
lsof | grepআমার জন্য আরও ভাল কাজ করে। fuser -mvঅসম্পৃক্ত প্রক্রিয়াগুলি কেবল 80+ ডাম্প করে। আমি মাউন্ট বাইন্ডেড ডিরেক্টরি ব্যবহার করছি।
umount -lবিপজ্জনক । পরিবর্তে উপরে mount -o bind একটি মোড 000খালি ডিরেক্টরি, এবং মাধ্যমে পরিষ্কার lsof +f -- /dev/device।
বেশিরভাগ সময়, ব্যবহারের সেরা কমান্ডটি হ'ল lsof (" l i s t o Pen f iles")।
lsof +f -- /media/usb0
যেখানে /media/usb0ইউএসবি ড্রাইভের মাউন্ট পয়েন্ট বা আনমাউন্ট করার জন্য অন্যান্য ফাইল সিস্টেম রয়েছে। +f --lsof কে পরবর্তী যুক্তিটিকে মাউন্ট পয়েন্ট হিসাবে বিবেচনা করতে বলে; এটি সাধারণত, তবে সবসময় নয়, নিজেরাই পরিচালনা করে, যাতে এটি কার্যকর হয় lsof /media/usb0। এটি খোলা ফাইলগুলি (এমনকি লিঙ্কযুক্তগুলিও), মেমরি ম্যাপযুক্ত ফাইলগুলি, বর্তমান ডিরেক্টরিগুলি এবং আরও কিছু অস্পষ্ট ব্যবহারের সন্ধান করে। অন্যান্য ব্যবহারকারীর প্রক্রিয়া সম্পর্কে তথ্য পেতে আপনাকে কমান্ডটি রুট হিসাবে চালনা করতে হবে (এবং আমি মনে করি যে সেখানে এমন কোনও সংযোগ রয়েছে যেখানে lsofরুট হিসাবে চালাতে হবে)।
এমন ব্যবহার রয়েছে যেগুলি lsof খুঁজে পাবেন না; এগুলি অপসারণযোগ্য মিডিয়াতে অস্বাভাবিক। তারা সহ:
/fooহলে আপনি আনমাউন্ট করতে পারবেন না /foo/bar।/fooযদি /foo/barএকটি মাউন্ট ব্লক ডিভাইস বা লুপ-র উপরে মাউন্ট নিয়মিত ফাইল বা যদি এটি একটি Linux বেঁধে উৎস মাউন্ট।আরেকটি কমান্ড যা চিমটিতে পরিবেশন করতে পারে তা হ'ল ফুসার, যা কেবলমাত্র ডিভাইসে খোলা ফাইলগুলি সহ প্রসেসের পিআইডি তালিকাবদ্ধ করে:
fuser -m /media/usb0
আপনি lsofপিটারের মতো বলে ব্যবহার করতে পারেন , বা আপনি যদি নিশ্চিত হন যে আপনি কেবল এই সমস্ত জিনিস হত্যা করতে এবং এটি আনমাউন্ট করতে চান তবে আপনি সম্ভবত এর মতো কিছু করতে পারেন:
fuser -Mk /mnt/path
umount /mnt/path
-Mসুরক্ষার জন্য ব্যবহারটি দেখুন।
-Mপ্রয়োগ করা উচিত তা পরিষ্কার করতে চাইতে পারেন ।
fuser: -M, --ismountpoint Request will be fulfilled only if NAME specifies a mountpoint. This is an invaluable seatbelt which prevents you from killing the machine if NAME happens to not be a filesystem.
খোলা ফাইল সহ প্রক্রিয়াগুলি হ'ল স্বাভাবিক অপরাধী। তাদের প্রদর্শন করুন:
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>
অপরাধী নিজেই কর্নেল হতে পারে। আপনি যে ফাইল সিস্টেমে চেষ্টা করছেন সেটি মাউন্ট করা অন্য একটি ফাইল সিস্টেম umountশোকের কারণ ঘটবে। পরিক্ষা কর:
mount | grep <mountpoint>/
লুপব্যাক মাউন্টগুলির জন্য ( ধন্যবাদ স্টিফেন কিট ), এর ফলাফলও দেখুন :
losetup -la
বেনামে আইওডগুলি তৈরি করতে পারে:
openসহ O_TMPFILE)এই পোকেমন অধিকাংশ অধরা ধরনের হয়, এবং প্রদর্শিত lsof'র TYPEহিসাবে কলাম a_inode(যেখানে অনথিভুক্ত হয় lsofman পৃষ্ঠা )।
এগুলি উপস্থিত হবে না lsof +f -- /dev/<device>, সুতরাং আপনার প্রয়োজন হবে:
lsof | grep a_inode
বেনামে আইওনড ধারণ করে হত্যা করার প্রক্রিয়াগুলির জন্য দেখুন: বর্তমান ইনোটিফাই ঘড়ির তালিকা করুন (পথের নাম, পিআইডি) ।
inotify ঘড়ি (লিনাক্স)এই মন্তব্যটি ব্যাখ্যা করে যে কেন আনমাউন্টটি রোধ করা inotify উচিত নয় , তবে এই নোটটি এমন পরিস্থিতিতে বর্ণনা করে যা এটি করবে :
কোনও আনমাউন্ট
vx_softcnt_flush()কলটিতে ঝুলতে পারে । হ্যাং ঘটে কারণ ইনোটাইফাই ওয়াচগুলিi_countপরিবর্তনশীল বৃদ্ধি করে এবংv_os_hold valueইনোটাইফাই প্রহরী হোল্ডটি প্রকাশ না হওয়া পর্যন্ত কারণটিকে উন্নত রাখার কারণ করে ।
lsof।
Mountpointsঅধ্যায়।
(কমপক্ষে) ওপেনবিএসডি এর জন্য:
$ fstat /mnt/mountpoint
উদাহরণস্বরূপ ( যেমনটি অন্যথায় কেবল আমাদের নিজস্ব প্রক্রিয়াগুলি দেখতে doasপারা যায় fstatতেমনি মূল হিসাবে নির্বাহ করতে ব্যবহার করা ):
$ doas fstat /usr/ports
USER CMD PID FD MOUNT INUM MODE R/W SZ|DV NAME
_pbuild make 15172 wd /usr/ports 3923598 drwxrwxr-x r 1536 /usr/ports/
_pbuild make 40034 wd /usr/ports 3923598 drwxrwxr-x r 1536 /usr/ports/
এই ক্ষেত্রে, /usr/portsব্যবহারকারী _pbuildএই দুটি makeপ্রক্রিয়া চালানো শেষ না করা পর্যন্ত আমি আনমাউন্ট করতে সক্ষম হব না ।
এটি একটি সাধারণ ক্ষতি: আপনি পৃথক ব্যবহারকারীর (আপনি মূল বা অন্য কোনও ব্যবহারকারী) এর কাছে মামলা করতে পারেন, একটি মাউন্টড ডিভাইসের ডিরেক্টরিতে পরিবর্তন করুন এবং তারপরে সেই ব্যবহারকারী হিসাবে লগ আউট করুন। আপনি যখন ভুলে যান যে আপনি সেই ডিরেক্টরিটিতে রেখে গেছেন, আপনি অন্ধ না হওয়া পর্যন্ত আপনি চেষ্টা করে দেখতে পারেন। lsofবর্তমান ডিরেক্টরিটি সেই ডিভাইসটি ব্যবহার করছে তা শেলটি প্রদর্শন করে না। আপনার ডিরেক্টরি পরিবর্তন করতে আপনি আবার সেই ব্যবহারকারী হিসাবে মামলা করতে পারেন।