Как использовать команду 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
упрощает идентификацию устройства, которое вы только что подключили, делая процесс перезаписи более безопасным.
Легче и безопаснее — еще один способ сказать «выиграл-выиграл».