কখনও কখনও, আমি একটি আন-মাউন্ট করা চাই 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
(যেখানে অনথিভুক্ত হয় lsof
man পৃষ্ঠা )।
এগুলি উপস্থিত হবে না 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
বর্তমান ডিরেক্টরিটি সেই ডিভাইসটি ব্যবহার করছে তা শেলটি প্রদর্শন করে না। আপনার ডিরেক্টরি পরিবর্তন করতে আপনি আবার সেই ব্যবহারকারী হিসাবে মামলা করতে পারেন।