ویکی تخصصی گنولینوکس را در لینک زیر ببینید www.wiki.linuxfedora.ir برنامه های خط فرمان بر اساس حروف الفبا http://url.linuxfedora.ir/33نرم افزارهای گنولینوکس با تفکیک و دسته بندیhttp://url.linuxfedora.ir/3h آموزشهای مختلف گنولینوکس با دسته بندی

دستور umount ( خارج کردن دایرکتوری از mount )

تمام دستوراتی که با حرف U شروع میشوند در این انجمن قرار دارند
ارسال پست
نمایه کاربر
phoenix
مدیر کل سایت
مدیر کل سایت
پست در این موضوع: 1
پست: 232
تاریخ عضویت: شنبه 29 مهر 1396, 11:10 am
محل اقامت: مشهد
نسخه فدورا: 29
نوع دسکتاپ: LXQT
تماس:

دستور umount ( خارج کردن دایرکتوری از mount )

پست توسط phoenix » شنبه 29 مهر 1396, 8:34 pm

  • unmount کردن همه فایل سیستم های موجود در etc/fstab/
دستور umount یک دایرکتوری را از حالت mount خارج میکند که در اصطلاح آن را unmount میکند. شکل استفاده از آن ساده بود و فرمت کلی زیر را دارد:

کد: انتخاب همه

umount <mount_point>
دقت کنید همانطور که در مثال زیر مشاهده میکنید دستور مورد نظر unmount نیست بلکه umount است

کد: انتخاب همه

umount -a
برخی از فایل سیستم ها به دلیل busy بودن یا در حال استفاده بودن قابل unmount شدن نیستند. به این موضوع هم توجه کنید که محتویات فایل هایی که در فایل etc/mtab/ و proc/mounts/ قرار دارند شبیه به هم هستند.
  • unmount کردن بیشتر از یک mount point در یک لحظه
دستور umount در لینوکس به شما اجازه میدهد که بتوانید در یک لحظه چندین mount point را unmount کنید به مثال زیر توجه کنید:

کد: انتخاب همه

umount /mydata /backup
در دستور فوق بطور همزمان دایرکتوری mydata/ و backup/ همزمان unmount خواهند شد
  • Lazy Unmount کردن در یک فایل سیستم
برخی اوقات پیش میآید که شما در حال کپی کردن یا کپی گرفتن از محتویات یک پارتیشن هستید و میخواهید پارتیشن مربوطه را unmount کنید اما نمیخواهید فرآیند کپی کردن شما دچار مشکل شود در چنین شرایطی unmount به شما گزینه ای را ارائه میکند که به Lazy Unmount معروف است. زمانیکه شما یک پارتیشن یا یک فایل سیتم را Lazy Unmount میکنید تا زمانیکه فرآیند در حال کار که در اینجا کپی کردن است تمام نشود عملیات unmount انجام نخواهد شد شما میتوانید با استفاده از آرگومان l- در دستور umount این کار را مشابه دستور زیر انجام دهید و خیالتان از بابت کپی شدن فایل های در حال کپی راحت باشد:

کد: انتخاب همه

umount -l /mydata
  • اجبار unmount شدن یک فایل سیستم
برخی اوقات بعد از اینکه شما دستور umount را وارد میکنید ممکن است دستگاه یا پارتیشن مورد نظر در حال کار باشد و به شما پیام داده شود که دستگاه busy است و در حال حاضر نمیتوان آن را unmount کرد اما شما میتوانید در چنین موارد با استفاده از آرگومان f- در دستور umount فرایند unmount شدن را force یا اجبار کنید که در این صورت دستگاه بلافاصله unmount خواهد شد به مثال زیر دقت کنید:

کد: انتخاب همه

umount -f /mnt
اگر دستور مورد نظر کار نکرد شما میتوانید مانند مثال قبلی از Lazy Unmount استفاده کنید شما میتوانید از طریق دستور متوجه شوید که چه پردازش هایی در حال استفاده از mount point مورد نظر هستند دستور ps به شکل زیر به شما خروجی ها را نمایش میدهد که در خصوص پردازش هایی هستند که در حال استفاده از mount pointی به نام mydata/ میباشند:

کد: انتخاب همه

ps ajx|grep /mydata
با استفاده از دستور fuser به شکل زیر هم میتوانید متوجه شوید که در حال حاضر کدام پردازش دایرکتوری را برای انجام کار نگه داشته است:

کد: انتخاب همه

fuser -cu /mydata
خروجی دستور بالا

کد: انتخاب همه

/mydata:             5430(phoenix)
همانطور که در خروجی فوق مشاهده میکنید نام کاربری به همراه نام پردازش مورد نظر به شما نمایش داده میشود نام کاربری در واقع مالک پردازش مورد نظر است و شما میتوانید با kill کردن پردازش مورد نظر عملیات unmount را به درستی انجام دهید.
رفع مشکلات Unmount عمل Unmount عکس mount است و اتصال میان نقطه اتصال و پارتیشن یا دایرکتوری را قطع میکند. چندین دلیل وجود دارد که یک mount point نتواند قطع شود. یکی از آنها مشغول بودن پارتیشن یا دایرکتوری است یعنی کاربری مثلا با دستور cd وارد آن نقطه اتصال شده و امکان قطع اتصال وجود ندارد و یا اینکه فرآیند یا کاربری در حال استفاده از فایلی درون آن نقطه اتصال هستند. یعنی یک فایل open یا باز وجود دارد که در حال استفاده شدن توسط دیگران است.
بطور کلی شما نمیتوانید یک نقطه اتصال را بخاطر مشغول بودن یا باز بودن فایلی در آن دایرکتوری قطع یا Unmount کنید دو دستور lsof و fuser دستورهایی هستندکه میتوانید توسط آنها بررسی کنید که کدام فرآیندها و کاربران در حال استفاده چه فایل هایی هستند که باعث عدم عمل Unmount شده است.
سیستم فایل ها در زمان خاموش شدن بصورت خودکار Unmount میشوند که پس از اینکه تمام فرآیندهای غیر سیستمی خاتمه یافتند اینکار انجام میشود و دوباره موقع boot شدن بصورت خودکار mount خواهند شد یکی از خطاهایی که ممکن است در هنگام Unmount کردن رخ دهد خطای زیر است:

کد: انتخاب همه

umount /dev/sdb1
umount: /run/media/phoenix/EXT-HARD: target is busy.
خطای بالا به این معنی است که نقطه اتصالی به نام EXT-HARD اشغال است. یک علت خطای busy به خاطر این است که شاید کاربری در دایرکتوری /run/media/phoenix/EXT-HARD قرار دارد یعنی دایرکتوری جاری برای آن کاربر دایرکتوری /run/media/phoenix/EXT-HARD است. میتوانید از دستور pwd برای فهمیدن دایرکتوری جاری استفاده کنید. دلیل دیگر آن این است که کاربر با فرآیندی در حال استفاده از یک فایل که درون این دایرکتوری وجود دارد هستند دستور lsof برای فهرست کردن فایل های باز استفاده میشود. طریقه استفاده از دستور lsof برای Unmount کردن
فرض کنید سیستم فایل بر روی دایرکتوری mnt/hdd/ اتصال داده شده است و میخواهید این نقطه اتصال را قطع کنید ولی با مشکل busy بودن مواجه میشوید. برای فهرست کردن لیستی از فرایندهای مرتبط با دایرکتوری mnt/hdd/ از دستور lsof بصورت زیر استفاده میکنیم.

کد: انتخاب همه

lsof /mnt/hdd/
خروجی دستور بالا

کد: انتخاب همه

COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
bash    31010 phoenix  cwd    DIR   8,17     4096 20323 /mnt/hdd/software
bash    31145 phoenix  cwd    DIR   8,17     4096 20323 /mnt/hdd/software
more    31370 phoenix  cwd    DIR   8,17     4096 20323 /mnt/hdd/software
more    31370 phoenix    3r   REG   8,17       70  3983 /mnt/hdd/software/test.txt
lsof    31379 phoenix  cwd    DIR   8,17     4096 20323 /mnt/hdd/software
lsof    31380 phoenix  cwd    DIR   8,17     4096 20323 /mnt/hdd/software
پس از بدست آوردن شماره pid هر یک از فرایندها باید آنها را با دستور kill از بین ببریم. فرمت کلی برای اینکار بصورت زیر است.

کد: انتخاب همه

kill -l5
نکته ای که درباره خروجی دستور بالا خط سوم و چهارم است که دستور more را نشان میدهند این است که ستون fd در سومین خط بیانگر این است که دایرکتوری جاری یا cwd آن دایرکتوری mnt/hdd/software/ است و این به این معنی است که دستور more در حال اجرا شدن و خواندن یک فایل در دایرکتوری mnt/hdd/software/ است و فایلی که دستور more در حال خواندن آن است test.txt نام دارد در ستون fd از خط چهارم 3r بیانگر خواندن فایل توسط دستور more است.
به هر حال باید با دستور lsof شماره pid ها بدست بیاورید و سپس با دستور kill آن فرایندها را از بین ببرید و در آخر با دستور umount دایرکتوری را Unmount کنید
 ! پیام از: phoenix
برای توضیحات تکمیلی در ارتباط با دستورهای ps - grep - fuser - kill - lsof میتوانید بر روی هر دستور کلیک تا به صفحه همان دستور ارجاع داده شوید
تصویر برای ادامه کار و بالا رفتن کیفیت آموزش ها نیاز به حمایت مالی شما داریم پس لطفا از ما حمایت کنید
از اونجایی که برای جمع آوری و ترجمه و تالیف یک پست آموزشی زمان و زحمت زیادی صرف شده است.
لطفاً در صورت استفاده از این مطلب در سایت یا مقاله و ..... حتما با ذکر منبع و لینک برگشتی باشد.

مسلما این حمایت شما دوستان موجب پایداری اینگونه اثرها خواهد بود سربلند و پیروز باشین

ارسال پست

بازگشت به “U”