pwd: показать точку монтирования

Я установил каталог в другой каталог, используя mount --bind чтобы пользователь sftp моего сервера мог получить доступ к этому каталогу.

 mount --bind /path/share /path/home/user/stuff 

Я поместил это в /etc/fstab и он отлично работает.

Если я cd к установленному каталогу и сделаю pwd , кажется, что каталог на самом деле физически существует:

 /path/home/user/stuff/share 

Есть ли команда, которая показывает, где находится «исходный» каталог (как символические ls -fsl : когда вы выполняете ls -fsl вы видите исходный путь)?

3 Solutions collect form web for “pwd: показать точку монтирования”

Я думаю, вы ищете mount -l .

Да, каталог есть, потому что вы его там установили. mount --bind сообщает ядру использовать существующее крепление и присоединяет его к другой точке монтирования. Что касается ядра,

 mount /dev/something /path/share mount --bind /path/share /path/home/user/stuff 

а также

 mount /dev/something /path/home/user/stuff mount --bind /path/share /path/home/user/stuff 

это одно и то же. Есть два способа их отличить:

  • Если /path/share не является точкой монтирования (т. /path/share Является частью более крупной файловой системы, установленной в /path или / ), вы можете указать привязку привязки, потому что она не находится в корне файловой системы.
  • Программа mount записывает свои действия в /etc/mtab .

Команда df считывает /etc/mtab , поэтому, если каталог находится в файловой системе, которая была смонтирована с опцией bind , вы можете увидеть, что было с исходным путем

 df -P /path/to/file | awk 'NR==2 {print $1}' 

(первое поле второй строки). Обратите внимание, что эта информация не всегда надежна, например, возможно, что исходная файловая система была размонтирована, и ничто, или что-то еще, теперь не монтируется в этом месте, как в

 mount /dev/something /path/share mount --bind /path/share /path/home/user/stuff unmount /dev/something mount /dev/somethingelse /path/share 

Я проверил исходный код df и сделал похожий скрипт, который найдет исходный путь,

например, вы привязываете / tmp / a к / tmp / b,

И вы запускаете мой скрипт с perl script.pl /tmp/b/what/ever/deep/inside , вы найдете /tmp/a

 #!/usr/bin/perl use strict; use warnings; use File::Basename; sub findmnt { my $path = shift or die; open my $fh, 'mount|' or die; while (<$fh>) { return $1 if ($_ =~ qq{(.*) on $path type }) } }; if ($#ARGV lt 0) { die 'Usage: ', $0, ' /path/to/dir', "\n"; } my $mntpath = $ARGV[0]; while ($mntpath ne '/') { my $origpath = findmnt $mntpath; if ($origpath ne '') { print 'Original path: ', $origpath, "\n"; last; } $mntpath = dirname ($mntpath); } 
Interesting Posts

Bash использовать альтернативный dotfile?

Как использовать yum для установки с DVD-диска

Скрипт Bash: анализ подкаталога, а не текущих каталогов

Множество ошибок на ext4, однако smart не показывает никаких ошибок

Рекомендация по файловой системе для встроенного устройства – ОЗУ или USB

zsh HISTFILE – все еще читается из ~ / .zsh_history

привязка к удаленному IP-адресу

Ошибка Yum при установке MongoDB на CentOS?

Расширение «RANDR» отсутствует на xvfb

Является ли / dev / random data псевдо-случайным AES cypher, и откуда берется энтропия?

Linux-сервер с чаем-деамоном, подключенным к активному каталогу, защищающему клиентов от использования драйверов или PPD

Ручная установка pdftk не может найти библиотеку libgcj

shell-скрипт для имени файла chmod, но только для новых файлов с момента последнего запуска скрипта

Как удалить конкретную дублируемую строку в файле?

Отправить файл по протоколу xmodem или kermit с экраном GNU

Linux и Unix - лучшая ОС в мире.