Поиск по сайту:

Как использовать команду findmnt в Linux


Узнайте все о точках монтирования вашей файловой системы с помощью команды Linux findmnt. Это универсальный инструмент с очень простым синтаксисом. Мы покажем вам, как его использовать.

Точки крепления

Файловая система Linux представляет собой большое дерево. В зависимости от выбора, который вы сделали при установке Linux, на разных жестких дисках вашего компьютера могут быть разные файловые системы. Если вы используете пакеты snap, в вашей системе также будут псевдофайловые системы squashfs. Такие устройства, как USB-накопители, будут иметь различные файловые системы, особенно если вы также используете их на компьютерах с Windows.

Независимо от типа файловой системы, все они должны быть привиты к дереву файловой системы в процессе монтирование. Монтаж является важным этапом в получении работающей системы. Мы склонны думать о монтировании устройства как о жестком диске, но на самом деле монтируется файловая система на этом устройстве. А без доступа ко всем этим различным файловым системам ваш компьютер может даже не загрузиться, или вы не сможете получить доступ к приложениям или данным.

Файловые системы монтируются в точках монтирования. Это просто пустые каталоги. После того, как файловая система смонтирована, вход в этот каталог помещает вас в эту файловую систему. Это дает большую гибкость. Корень дерева файловых систем должен быть смонтирован в «/», но вы можете монтировать другие файловые системы, где это наиболее целесообразно в ваших конкретных обстоятельствах.

Эта гибкость действительно означает, что может быть трудно отслеживать все различные точки монтирования, особенно те, которые были созданы автоматически и были созданы без вашего участия. Linux предоставляет множество инструментов командной строки, позволяющих просматривать конфигурацию и состояние точек монтирования. Из всех них findmnt является самым простым в использовании, и у него есть свои собственные хитрости.

Команда поиска

Команда findmnt уже была установлена в проверенных нами сборках Ubuntu, Manjaro и Fedora. Если он не установлен на вашем компьютере с Linux, вы сможете легко найти его с помощью диспетчера пакетов для вашего дистрибутива.

Инструмент командной строки, который вы используете для монтирования файловых систем, называется mount. Файловые системы, монтируемые во время загрузки, определяются в файле «/etc/fstab». Вы можете использовать команду mount, чтобы получить дамп всех точек монтирования, настроенных в вашем файле «/etc/fstab».

mount

Вывод детализирован, но отформатирован в виде плотной стены текста.

Приложив немного усилий, вы можете пробраться через него или передать его через такие утилиты, как grep, чтобы извлечь интересующие вас фрагменты. Вывод из findmnt намного доступнее.

findmnt

Напротив, выходные данные findmnt по умолчанию представлены в виде таблицы и содержат дерево, показывающее иерархию точек подключения.

Столбцы:

  • Цель: расположение точки подключения в файловой системе.
  • Источник: исходное устройство, содержащее файловую систему. Обратите внимание, что это может быть псевдоустройство, такое как петлевое устройство.
  • Fstype: тип файловой системы.
  • Параметры: параметры, которые использовались с командой монтирования из командной строки или в файле «/etc/fstab» для монтирования файловой системы.

Чтобы просмотреть вывод без дерева, используйте параметр -l (список).

findmnt -l

Столбцы те же, но иерархия точек подключения не представлена в виде дерева с отступом.

Выбор конкретных типов файловых систем

Параметр -t (тип) заставляет findmnt ограничить свой отчет, чтобы включить только запрашиваемый тип файловой системы. Например, чтобы увидеть только файловые системы ext4, вы должны использовать:

findmnt -t exta

Чтобы увидеть только файловые системы squashfs, введите:

findmnt -t squashfs

Чтобы инвертировать выбор так, чтобы вы видели все остальное, кроме типа, указанного в командной строке, используйте параметр -i (инвертировать).

findmnt -t squashfs -i

О файловых системах squashfs не сообщается.

Параметр -t (тип) позволяет использовать список типов файловых систем, разделенных запятыми. Не ставьте между ними пробелы, так как пробелы между типами файловой системы запрещены.

findmnt -t squashfs,proc,ext4

Выбор источника данных

По умолчанию findmnt получает информацию из «/etc/fstab», «/etc/mtab» и «/proc/self/mountinfo».

  • /etc/fstab: это файл, содержащий сведения о настроенных монтированиях. Они выполняются во время загрузки.
  • /etc/mtab: в этом файле содержится информация о смонтированных в данный момент объектах.
  • /proc/self/mountinfo: это запрашивает у ядра самую авторитетную учетную запись монтирования вашей системы.

Вы можете указать findmnt использовать один конкретный источник, если хотите. Варианты:

  • –fstab или -s: искать только в «/etc/fstab».
  • —mtab или -m: искать только в «/etc/mtab».
  • —kernel или -k: искать только в «/proc/self/mountinfo».

Мы можем увидеть разницу, если будем искать файловые системы vfat. Во-первых, мы будем использовать параметр -s (fstab). Это находит одну файловую систему vfat, смонтированную в «/boot/efi».

findmnt -s -t vfat

Мы попробуем еще раз, и на этот раз мы будем использовать параметр -k (ядро).

findmnt -k -t vfat

Это сообщает о четырех записях. Одна из них — та же самая файловая система vfat, которую нашел параметр -s. Остальные три — это специальные монтирования, которые произошли из-за того, что были подключены два USB-накопителя. Опция -s не нашла их, поскольку они не настроены. в файле «/etc/fstab».

Один USB-накопитель подключен как «/dev/sdc1», который является первым разделом на устройстве sdc. На другой карте памяти есть два раздела, и они были смонтированы как «/dev/sdb1» и «/dev/sdb2».

Выбор по точке монтирования

Если вы знаете точку монтирования, вы можете передать ее findmnt, чтобы узнать настройки и другие подробности.

findmnt /media/dave/PINK
findmnt /media/dave/WHITEUSB

Мы видим, что эти два USB-накопителя имеют файловые системы vfat и смонтированы как «/dev/sdb2» и «/dev/sdc1».

Использование режима опроса в findmnt

Возможно, самая крутая функция findmnt — это функция опроса. Запись изображений на USB-устройства — это то, что вы можете делать периодически. Идентификация правильного диска имеет решающее значение, конечно. Вы не хотите перезаписывать неправильное устройство. findmnt позволяет легко увидеть, к какому устройству подключен съемный диск.

Есть два способа сделать это. Вы можете попросить findmnt отслеживать новые подключения в течение периода времени, выраженного в миллисекундах. Сообщается обо всех монтированиях, которые происходят в течение этого периода. При этом используется параметр --timeout.

Второй способ говорит findmnt подождать, пока он не обнаружит новое монтирование. При этом используется параметр --first-only. Он будет ждать столько, сколько потребуется для нового монтирования, но сообщит только о первом монтировании. Опция --timeout будет сообщать обо всех новых подключениях, которые произошли в течение указанного периода опроса.

Эта команда указывает findmnt отслеживать новые подключения в течение 30 секунд.

findmnt -p --timeout 30000

В течение этого периода был подключен один USB-накопитель, о нем сообщается, и findmnt продолжает отслеживать оставшиеся 30 секунд.

Эта команда указывает findmnt отслеживать новые подключения до тех пор, пока не будет создана одна новая точка подключения.

findmnt -p --first-only

Когда новое устройство подключено, оно сообщает о новой точке подключения, а затем выходит в командную строку.

Простой способ избежать ошибок

Перезапись неправильного устройства — это всегда катастрофа. Команда findmnt упрощает идентификацию устройства, которое вы только что подключили, делая процесс перезаписи более безопасным.

Легче и безопаснее — еще один способ сказать «выиграл-выиграл».