Як отримати повний і точний список змонтованих файлових систем у Linux?


150

Я зазвичай використовую mountдля перевірки, які файлові системи змонтовані. Я також знаю , що є якась - то зв'язок між mountі , /etc/mtabале я не впевнений , що про деталі. Після прочитання Як перевірити, чи / proc / встановлено, я більше заплутався.

Моє запитання: як отримати найточніший список змонтованих файлових систем? Чи варто просто використовувати mountчи читати вміст /etc/mtabабо вміст /proc/mounts? Що дало б найбільш надійний результат?


3
Ви також повинні прочитати прийняту відповідь на це питання: unix.stackexchange.com/questions/12040/…
nozimica

Я не можу не зв’язатися з тим, що таке / etc / mtab в Linux? тому що він охоплює нелінукс-деталі, на які жоден відповідь тут не дає.
Вейджун Чжоу

Відповіді:


140

Остаточний перелік змонтованих файлових систем знаходиться в /proc/mounts.

Якщо у вас є будь-яка форма контейнерів у вашій системі, /proc/mountsперелічіть лише файлові системи, які є у вашому поточному контейнері. Наприклад, в Chroot , /proc/mountsперераховані тільки файлові системи , чия точка монтування знаходиться в ізольованому оточенні. ( Є способи уникнути хроту, розум. )

Також в списку змонтованих файлових систем /etc/mtab. Цей список підтримується командами mountта umount. Це означає, що якщо ви не використовуєте ці команди (що є досить рідкісним), ваша дія (змонтувати або відключити) не буде записана. На практиці ви знаходите /etc/mtabфайли, які суттєво відрізняються від стану системи. Крім того, кріплення, виконані в chroot, відображатимуться в chroot, /etc/mtabале не в основному /etc/mtab. Дії, які виконуються у /etc/mtabфайловій системі лише для читання, там також не записуються.

Причина, чому вам іноді хочеться проконсультуватися на користь /etc/mtabабо на додаток до цього, /proc/mountsполягає в тому, що, оскільки він має доступ до командного рядка mount, іноді він може представити інформацію легшим для розуміння; наприклад, ви бачите параметри монтажу, як це вимагається (тоді як /proc/mountsперелічені mountі параметри за замовчуванням та ядра), і вбудовані версії відображаються як такі в /etc/mtab.


1
Який сенс mountпідтримувати, /etc/mtabякщо на нього не можна покластися? Чи не було б краще, якби mountпредставлена ​​інформація /proc/mountsзамість цього?
Пьотр Доброгост

2
@PiotrDobrogost /etc/mtabможе записувати інформацію, яку ядро ​​не відслідковує, наприклад, спочатку запитувані параметри, а також прив’язувати вбудовані файли, що з’являються як такі, замість того, щоб вони відображалися як дублікати записів для пристроїв. Тим не менш, багато розповсюдження рухаються до створення /etc/mtabсимпосилання на /proc/mounts.
Жиль

3
Тим не менш, багато розповсюдження рухаються до створення /etc/mtabсимпосилання на /proc/mounts. Приємно почути - додавання цієї інформації у відповідь зробить її ще кращою. Ви вважаєте, що відстеження запитуваних параметрів ядром було б можливим і вигідним?
Пьотр Доброгост

2
Зауважте, що вам потрібно буде скасувати вміст / proc / mounts. Як описано на сторінці getmntent (3), простір (\ 040), вкладка (\ 011), новий рядок (\ 012) та зворотний кут (\ 134) потрібно обробляти спеціально. Особливо якщо ввімкнено кріплення користувачів, вам потрібно бути дуже обережними під час роботи з цими шляхами.
Ерік

2
Будь ласка, дивіться також іншу відповідь на використання команди, findmntяка є кращим способом з 2010 року і, ймовірно, єдиним безпечним способом у найближчому майбутньому, коли простори імен монтування будуть загальними.
Marki555

68

Станом на т. 2.18 (липень 2010 р.) Є util-linux інструмент, що дозволяє відображати список поточно встановлених файлових систем:

findmnt

Ви можете переключитися з перегляду дерев за замовчуванням на перегляд списку -l, визначити вихідні стовпці -o(аналогічно lsblk), фільтрувати результати на основі типу файлової системи з -tтощо ...

findmnt -ло джерело, мета, fstype, мітка, параметри, використано -t ext4
SOURCE    TARGET      FSTYPE LABEL OPTIONS                           USED
/dev/sda1 /           ext4   ARCH  rw,noatime,discard,data=ordered  17.6G
/dev/sdb2 /media/DATA ext4   DATA  rw,noatime,discard,data=ordered    44M

Для отримання більш детальної інформації читайте manсторінку (і findmnt --helpщоб отримати список доступних стовпців)


33

Можливо тому, що минуло 5 років, як відповіли на це питання, змінилися речі. cat /proc/mountsСтворює багато інформації ви не дбаєте про. Сьогодні, ІМХО, я вважаю це остаточним рішенням.

df -h --output=source,target

Коли ви читаєте чоловічі сторінки, ви можете зробити всілякі варіанти, але це те, що ви. Наприклад, щоб ще більше очистити результати, ви можете виключити типи файлів "tmpfs" за допомогою цієї команди:

df -hx tmpfs --output=source,target

df працює на рівні файлової системи, а не на рівні файлу.

Команди, наведені вище, також включатимуть мережеві кріплення.

Щоб переглянути трохи більше інформації, скористайтеся цією інформацією:

df -hT

ПРИМІТКА При повільно встановлених мережних з'єднаннях це може зайняти кілька хвилин!

Якщо у вас немає або не цікавитесь змонтованими мережевими з'єднаннями (і у вас є кореневі дозволи), це ще краще:

sudo lsblk -f

Вам не потрібно мати root, але деякі поля / стовпці (наприклад, Label) матимуть нульові дані, що все ще може бути добре, оскільки питання хочуть знати, які файлові системи змонтовані.
Рік

Ubuntu. Однак я тільки що виявив "findmnt", який не використовує root, і в ньому перераховані мережеві файлові системи. Я думав редагувати свою відповідь, щоб включити ці знання.
Рік

:-) Я втомився давати свою відповідь на голосування, але не можу, поки у мене не буде відповіді 15+
Рік,

1
До речі, якщо ви намагаєтеся використовувати --outputщось із типу Ubuntu 12, яке не приймає ці параметри, перегляньте відповідь don_crissti, findmntяка нижче.
Мат Шаффер

findmntЗдається, потрібні більш високі можливості (тестовано з root; root має всі можливості) для відображення міток.
ctrl-alt-delor

23

Більшість часу mountце найзручніший метод. Для повного та точного списку поточно встановлених файлових систем ви повинні прочитати вміст /proc/mounts(наприклад, з cat /proc/mounts).

Наприклад, якщо /не вдалося встановити readwrite, і тоді він був змонтований повторно лише як резервний запас, /etc/mtab(який mountкоманда читає, щоб повідомити, що встановлено, і записує, якщо це можливо - коли він змінює те, що встановлено) не буде оновлено щоб відобразити, що /(що містить /etc/mtab) наразі змонтовано лише. У цій ситуації біг mount, як правило, скаже вам (неправильно), що /було встановлено readwrite.

За звичайних умов (тобто коли файлова система, яка її містить, може бути записана в), /etc/mtabмістить список поточно встановлених файлових систем. Це не слід плутати /etc/fstab, що містить перелік файлових систем, які повинні встановлюватися автоматично при запуску системи.

Звичайно, якщо /procвіртуальна файлова система сама по собі не змонтована, то ви не можете прочитати жодний з віртуальних файлів у ній, який би включав /proc/mounts. Це дуже рідко буває. У цій ситуації, mountмабуть, найкращий варіант побачити те, що встановлено.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.