لينكس:ما هي العملية التي تسبب "انشغال الجهاز" عند القيام بـ umount؟[مغلق]

StackOverflow https://stackoverflow.com/questions/624154

سؤال

لينكس:ما هي العملية التي تسبب "انشغال الجهاز" عند القيام بـ umount؟

هل كانت مفيدة؟

المحلول

ونظرة على lsof الأوامر (قائمة الملفات المفتوحة) - يمكن أن أقول لكم الذي العمليات تحتجز ما مفتوحة. في بعض الأحيان انها صعبة ولكن في كثير من الأحيان شيء بسيط مثل sudo lsof | grep (your device name here) يمكن أن يفعل ذلك بالنسبة لك.

نصائح أخرى

وفقط في حالة ... يحدث في بعض الأحيان أن تتصل umount من المحطة، والدليل الحالي الخاص بك ينتمي إلى نظام الملفات المحملة.

ويجب عليك استخدام الصهر الأوامر.

وعلى سبيل المثال. سوف fuser /dev/cdrom إرجاع معرف المنتج (ق) من العملية باستخدام /dev/cdrom.

إذا كنت تحاول إلغاء تحميل، يمكنك قتل الأطروحات العملية باستخدام مفتاح -k (انظر man fuser).

والتحقق من وجود أجهزة حلقة مفتوحة تعيينها إلى ملف على نظام الملفات مع "losetup -a". أنها لن تظهر مع أي lsof أو المصهر.

وتحقق أيضا /etc/exports. إذا كنت تقوم بتصدير مسارات داخل توجد نقطة تحميل عبر NFS، وسوف يعطي هذا الخطأ عند محاولة إلغاء تحميل ولكن شيئا لن تظهر في fuser أو lsof.

lsof +f -- /mountpoint

و(كقوائم العمليات التي تستخدم الملفات الموجودة على جبل شنت في / توجد نقطة تحميل. مفيدة بشكل خاص لاكتشاف أي عملية (الخانات) تستخدم عصا USB محمولة أو CD / DVD.

وlsof وحدة الصهر هي في الواقع طريقتان للعثور على العملية التي تحافظ على ملف معين مفتوحة. إذا كنت ترغب فقط umount أن تنجح، يجب التحقيق -f -l والخيارات.

وهذا هو بالضبط السبب في وجود هذا "الصهر -m / جبل / نقطة".

وراجع للشغل، وأنا لا أعتقد أن "الصهر" أو "lsof" سيشير عندما يتم عقد الموارد عن طريق وحدة النواة، على الرغم من أنني لم يكن لديك عادة هذه المسألة ..

وlsof وحدة الصهر لم يعطوني أي شيء سواء.

وبعد عملية إعادة تسمية كافة الدلائل الممكنة إلى .old وإعادة تشغيل النظام في كل مرة بعد أن إجراء تغييرات وجدت دليل واحد معين (المتعلقة بوستفيكس) الذي كان مسؤولا.

واتضح أن كنت قد قدمت مرة واحدة في الارتباط الرمزي من / فار / بكرة / لواحق ل/ DISK2 / بيرس / البريد / بوستفيكس / varspool من أجل تقليل القرص يكتب على نظام ملفات الجذر القائم على SDCARD (Sheeva التوصيل).

ومع هذا الارتباط الرمزي، حتى بعد وقف لواحق وبرج الحمام الخدمات (سواء اوكس ملاحظة وكذلك -tuanp NETSTAT لم تظهر أي شيء متعلق) لم أكن قادرا على إلغاء تحميل / DISK2 / بيرس.

عند أزلت الرمزي وتحديث لواحق والتكوين برج الحمام الملفات لتشير مباشرة إلى تطبيق الاستعراض المفصل جديدة على / DISK2 / بيرس / وكنت قادرا على وقف بنجاح الخدمات وإلغاء تحميل الدليل.

وفي المرة القادمة سوف ننظر عن كثب في إخراج:

ls -lR /var | grep ^l | grep disk2

والأمر أعلاه سوف قائمة متكرر كل الروابط رمزية في شجرة الدليل (هنا ابتداء من الساعة / فار) وتصفية تلك الأسماء التي تشير إلى هدف محدد نقطة (هنا DISK2) جبل.

الملفات المفتوحة

العمليات ذات الملفات المفتوحة هي الجناة المعتادون.عرضها:

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>)، فمن الآمن (r) قتل جميع العمليات المتبقية:

fuser -vmMk <mountpoint>

نقاط التثبيت

يمكن أن يكون الجاني هو النواة نفسها.نظام ملفات آخر مثبت على نظام الملفات الذي تحاول تثبيته umount سوف يسبب الحزن.تحقق مع:

mount | grep <mountpoint>/

بالنسبة لعمليات تثبيت الاسترجاع، تحقق أيضًا من إخراج:

losetup -la

inodes مجهولة (لينكس)

inodes مجهولة يمكن إنشاؤها بواسطة:

  • ملفات مؤقتة (open مع O_TMPFILE)
  • com.inotify ساعات
  • [حدث فد]
  • [استطلاع للأحداث]
  • [مؤقت]

هذه هي أكثر أنواع البوكيمون مراوغة، وتظهر في lsofTYPE العمود كما a_inode (وهو غير موثق في lsof صفحة الرجل).

لن يظهروا فيها lsof +f -- /dev/<device>, ، لذا ستحتاج إلى:

lsof | grep a_inode

بالنسبة لعمليات القتل التي تحتوي على رموز مجهولة، راجع: قائمة ساعات inotify الحالية (اسم المسار، PID).

إذا كنت لا تزال لا يمكن إلغاء تحميل أو قم بإعادة تحميل الجهاز بعد وقف جميع الخدمات والعمليات مع الملفات المفتوحة، ثم قد يكون هناك ملف مبادلة أو مقايضة تقسيم الحفاظ على جهازك مشغول. هذا لن تظهر مع fuser أو lsof. إيقاف مبادلة مع:

sudo swapoff -a

هل يمكن أن تحقق مسبقا وتظهر ملخص أية أقسام مقايضة أو تبادل الملفات مع:

swapon -s

وأو:

cat /proc/swaps

وكبديل لاستخدام sudo swapoff -a الأوامر، قد تكون ايضا قادرة على تعطيل مبادلة من خلال وقف خدمة أو <م> سيستم دي الوحدة. على سبيل المثال:

sudo systemctl stop dphys-swapfile

وأو:

sudo systemctl stop var-swap.swap

في حالتي، إيقاف مقايضة كان من الضروري، بالإضافة إلى وقف أي الخدمات والعمليات مع الملفات المفتوحة للكتابة، كي أتمكن بإعادة تحميل التقسيم لدي جذور للقراءة فقط من أجل تشغيل fsck على قسم جذر بلدي دون إعادة التشغيل. وهذا أمر ضروري على التوت بي تشغيل Raspbian جيسي.

وشنت أنظمة الملفات على نظام الملفات التي تحاول إلغاء تحميل يمكن أن يسبب الخطأ target is busy بالإضافة إلى أي الملفات التي هي قيد الاستخدام. (على سبيل المثال عند mount -o bind /dev /mnt/yourmount/dev من أجل استخدام chroot هناك).

لتجد الذي أنظمة الملفات هي التي شنت على ملفات تشغيل التالية:

وmount | grep '/mnt/yourmount'

لإيجاد الملفات التي هي قيد الاستخدام نصيحة اقترح بالفعل من قبل الآخرين هنا:

وlsof | grep '/mnt/yourmount'

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top