Что есть /etc/mtab
в Linux?
Зачем это нужно и какие преимущества у него есть?
man 5 mtab
отсутствует.
Что есть /etc/mtab
в Linux?
Зачем это нужно и какие преимущества у него есть?
man 5 mtab
отсутствует.
Ответы:
% file / etc / mtab / etc / mtab: символическая ссылка на ../proc/self/mounts % file / proc / mounts / proc / mounts: символическая ссылка на себя / mounts %
/etc/mtab
это механизм совместимости. Несколько десятилетий назад в Unix не было системного вызова для чтения существующей информации о монтировании. Вместо этого программы, которые монтировали файловые системы, должны были совместно и добровольно вести таблицу /etc/mtab
того, где и где были смонтированы.
По понятным причинам это был не идеальный механизм.
Linux получил понятие «procfs», и одной из вещей, которую он получил, была поддерживаемая ядром версия этой таблицы в форме mounts
псевдорегулярного файла. «Системный вызов» для чтения информации о монтировании из ядра превратился в последовательность «открытый для чтения и закрытия» для этого файла, с последующим анализом результата от читабельной до машиночитаемой формы (что-то, что имеет некоторые тонкие уловки, как вы можно увидеть из сообщений об ошибках чуть более двух недель назад).
/etc/mtab
таким образом, популярно стало символической ссылкой на /proc/mounts
, позволяя программам, которые зашифровали это имя, продолжать чтение таблицы монтирования из этого файла, что программы, которые монтировали и размонтировали файловые системы, больше не должны явно делать что-либо сами, чтобы оставаться в курсе. (Однако некоторые из них все равно будут, если /etc/mtab
окажется, что это обычный файл с возможностью записи. И есть несколько угловых случаев, когда нормализованная информация, в mounts
которой отсутствуют все неядерные данные, не совсем то, что нужно; хотя они не перевешивают общие проблемы с /etc/mtab
.)
Каждый процесс может в настоящее время имеет свой индивидуальный вид , что установлен, и есть , как следствие теперь отдельные mounts
файлы для каждого процесса в PROCFS, собственная таблица каждого процесса является доступным для него через self
символическую ссылку , как self/mounts
и /proc/mounts
является также теперь совместимостью механизм. (Интересно, что ни текущий процесс, mounts
ни формат mounts
не документированы в текущем документе Linux, хотя подобный mountinfo
псевдорегулярный файл есть.)
SunOS / Solaris имеет аналогичный механизм. /etc/mnttab
Файл на самом деле является одним файлом файловой системы, и в дополнение к чтению таблицы, с помощью дескриптора открытого файла в этот файл, с read()
системным вызовом, можно наблюдать за изменениями монтажа точки с poll()
и получить различные дополнительные фрагменты информации с ioctl()
.
В HP-UX /etc/mnttab
аналогично имя файла, но начиная с версии 11 это все еще был обычный файл, содержимое которого совместно поддерживалось программами системной утилиты.
AIX не экспортирует читабельную текстовую таблицу, которую должны анализировать программы, и не существует эквивалентного файла. Точно так же BSD имеют полнофункциональные системные вызовы getfsstat()
во FreeBSD и OpenBSD для программ, которые получают таблицу монтирования из ядра в машиночитаемой форме, не распределяя ее через читаемую человеком промежуточную форму.
/proc/self/mountinfo
с \ r в пути монтирования . # 35137. Ошибки GNU coreutils./proc/mounts
, Документация / файловые системы / proc.txt . Linux 5.1.fstab-decode
. Ошибка # 567071. Ошибки Debian.getfsstat()
, Руководство по системным вызовам FreeBSD . 2016-12-27.mtab(5)
из старых времен: man.cat-v.org/unix_8th/5/mtab .
/proc/mounts
, но /proc/self/mounts
и сам по себе механизм совместимости; это только показывает подмножество информации, доступной в /proc/self/mountinfo
. Формат /proc/self/mounts
документа задокументирован proc(5)
какfstab(5)
По словам man mount
:
Программы mount и umount традиционно поддерживают список монтируемых в настоящее время файловых систем в файле / etc / mtab. Этот настоящий файл mtab по-прежнему поддерживается, но в современных системах Linux лучше сделать его символической ссылкой на / proc / mounts, поскольку обычный файл mtab, поддерживаемый в пространстве пользователя, не может надежно работать с пространствами имен, контейнерами и другими расширенными функциями Linux.
При монтаже без записи в /etc/mtab
:
-n, --no-mtab
Смонтировать без записи в / etc / mtab. Это необходимо, например, когда / etc находится в файловой системе только для чтения.
Еще много нюансов дано на странице руководства.