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

Я пытаюсь скопировать файлы с сервера в мой локальный каталог с помощью rsync.I не хочу копировать файлы, которые были скопированы ранее и удалены

интеграция bugzilla-IRC

Посмотрите, был ли файл скопирован на USB-накопитель

Синхронные процессы в фоновом режиме

Как отличаются основные менеджеры пакетов?

Ядро Gentoo не загружается

подсветка синтаксиса emacs не работает на моем SSH-клиенте

Ubuntu 14.04.2 LTS: для пользователей NIS SSH работает, но консольный вход и sudo fail

LUKS – изменение кодовой фразы с / dev / mapper / fedora-root

В чем разница между набором макросов mdoc для troff и макросом простого человека для создания новых manpages

Что такое «молчащий флаг» для монтирования?

Выполнить строки вывода команд в качестве другой команды в Linux

Отсутствует служебный файл для pure-ftpd

Безопасно ли прервать неправильные блокировки?

Как запустить gnuplot, просто набрав «gp» в osx?

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