/proc/PID/mountinfo: монтирования глазами процесса
Разберите структуру mountinfo, найдите разделитель полей и отличите источник файловой системы от точки монтирования в пространстве выбранного процесса.
Один путь, разные видимые файлы
Программа и администратор обращаются к одинаковому пути, но видят разные данные. Помимо прав и опечаток проверьте пространство монтирования. Путь имеет смысл относительно окружения процесса, а не только как строка символов.
mountinfo помогает выяснить, какие монтирования видны конкретному PID. Мы прочитаем несколько записей собственной оболочки и разберём структуру, не выполняя mount или umount и не меняя доступное файловое дерево.
Корень монтирования и точка подключения
Слева в записи находятся идентификаторы монтирования и родителя, major:minor устройства, корень внутри файловой системы, точка монтирования и её опции. Затем идут необязательные поля до отдельного дефиса. Справа от дефиса указаны тип файловой системы, источник и опции superblock.
Не рассчитывайте найти тип файловой системы всегда в одной абсолютной колонке: число необязательных полей меняется. Root и mount point тоже не синонимы. Для bind-монтирования корень может обозначать лишь часть исходной файловой системы.
Откройте записи выбранного PID
Пример выводит начало файла и записи procfs. Фильтр по строке « - proc » ищет тип после разделителя, а не произвольное совпадение слова proc в пути.
mount_pid=$$
head -n 6 "/proc/$mount_pid/mountinfo"
grep -F " - proc " "/proc/$mount_pid/mountinfo"Проследите путь до источника
Выберите одну строку и сначала найдите отдельный дефис. Разберите правую часть, затем вернитесь к root и mount point слева. Такой порядок уменьшает риск прочитать optional field как тип файловой системы.
Для самостоятельного примера вообразите root /datasets, а mount point /work/input. Файлы процесса под /work/input относятся к выбранному поддереву /datasets источника. Из этого ещё не следует, что путь /datasets доступен самому процессу напрямую. При сравнении контейнера и хоста запишите PID каждой стороны.
Проверьте своё рассуждение
Задача: одинаковый major:minor найден у двух записей с разными точками подключения. Обязательно ли одна строка ошибочная?
Нет. Один источник может быть представлен несколькими монтированиями. Сравните root, mount point и идентификаторы: файловая система и место её подключения — разные сущности.
Не восстанавливайте дерево слепой разбивкой
Пути могут содержать экранированные символы, идентификаторы переиспользуются, а родительская запись может быть скрыта корнем процесса. Для автоматического анализа нужен разбор формата, а не случайный номер колонки. Наблюдение из ограниченного контейнера не показывает всю файловую картину хоста.
Технические источники
Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.
- Linux man-pages — proc_pid_mountinfo(5)
Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.
Нужны собственная Linux-система, смонтированный procfs и Bash. Доступность полей зависит от ядра, его конфигурации, прав и пространств имён. Примеры только читают диагностические интерфейсы; браузерный симулятор их не реализует.
От материала к практике
Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.