pwd: マウントポイントの表示

pwd: マウントポイントの表示

mount --bind私のサーバーのSFTPユーザーがアクセスできるように、ディレクトリを別のディレクトリにマウントしました。

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

入れてみましたが/etc/fstabとても上手です。

cdマウントされたディレクトリに移動してこれを実行すると、pwdそのディレクトリが実際に物理的に存在するようです。

/path/home/user/stuff/share

「元の」ディレクトリがどこにあるかを示すコマンドはありますか(シンボリックリンクのように:元のls -fslパスを見るとき)。

答え1

私はあなたが探していると思いますmount -l

答え2

はい、ディレクトリはそこにインストールしたのでそこにあります。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

それは同じです。これを区別する方法は2つあります。

  • /path/shareマウントポイントでない場合(つまり/path、またはマウントされているより大きなファイルシステムの一部である場合/)、ファイルシステムのルートにないため、バインドマウントがわかります。
  • プログラムmountは仕事を/etc/mtab

このdfコマンドは、ディレクトリがこのオプションでマウントされたファイルシステムにある場合に元のパスが何であるかを確認できる/etc/mtabように読み取ります。bind

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

(2行目の最初のフィールド)この情報は常に信頼できるとは限りません。たとえば、次のように元のファイルシステムがアンマウントされ、現在この場所や他の場所に何もインストールされていない可能性があります。

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

答え3

Linuxでは、findmnt(from util-linux)を使ってこれを行うことができます。

~$ sudo mount --bind /usr/local mnt
~$ cd mnt/bin
~/mnt/bin$ pwd
/home/stephane/mnt/bin
~/mnt/bin$ findmnt -T .
TARGET             SOURCE                             FSTYPE OPTIONS
/home/stephane/mnt /dev/mapper/VG-LV[/usr/local]      ext4   rw,noatime,discard,errors=remount-ro,data=ordered

答え4

デイジーの答えによるとどうですか?

use strict;
use warnings;
use File::Basename;

my $mntpath = $ARGV[0] or die "Missing required parameter <pathname>\n";
$mntpath = dirname ($mntpath) while (! grep / on $mntpath type /, `mount`);

関連情報