現在のディレクトリにマウントしているときにCDイメージファイルが表示されないのはなぜですか?

現在のディレクトリにマウントしているときにCDイメージファイルが表示されないのはなぜですか?

次のコマンドを使用して現在のディレクトリにディスクイメージをマウントする場合:

sudo mount -o loop -t iso9660 wall.iso ./

現在のディレクトリのファイルを一覧表示すると、wall.isoのみが返されます。
ディスクイメージの実際のファイルを表示するには、まずcdディレクトリを終了してからそのディレクトリに戻る必要があります。

注:wall.isoが次の名前のファイルを計算することを既に知っている場合サブディレクトリls、すでにリストできるディレクトリをリストするのも難しいですcd subdir

初めて呼び出すときにファイルが返されないのはなぜですかlslsディレクトリを変更したときにのみ更新されるキャッシュから読みますか?

答え1

これはインストールするディレクトリにあるためです。そのため、元のディレクトリを介して元のディレクトリの内容を参照しています。

cd後で削除されるディレクトリを入力しても、同じ効果を見ることができます。

$ pwd
/home/saml/dirtodel

$ rmdir ../dirtodel

$ pwd
/home/saml/dirtodel

どうすればいいですか?削除したばかりのディレクトリにはまだ残っています。どうなりますか?

cdシェルにある間は、/home/saml/dirtodel次のコマンドを実行してbashセッションのプロセスID(PID)を見つけます。

$ echo $$
32619

これで、そのPIDの/ procディレクトリに移動すると、何が起こっているのかを確認できます。

$ ls -l /proc/32619/ | head -10
total 0
dr-xr-xr-x 2 saml saml 0 May 18 07:40 attr
-r-------- 1 saml saml 0 May 18 07:40 auxv
-r--r--r-- 1 saml saml 0 May 18 07:40 cgroup
--w------- 1 saml saml 0 May 18 07:40 clear_refs
-r--r--r-- 1 saml saml 0 May 18 02:06 cmdline
-rw-r--r-- 1 saml saml 0 May 18 07:40 comm
-rw-r--r-- 1 saml saml 0 May 18 07:40 coredump_filter
-r--r--r-- 1 saml saml 0 May 18 07:40 cpuset
lrwxrwxrwx 1 saml saml 0 May 18 07:31 cwd -> /home/saml/dirtodel (deleted)

最初のいくつかのファイルを一覧表示すると、cwd現在の作業ディレクトリを表すというファイルが表示されます。これは以前の名前を指し、「削除」されました。

これは私たちに何が起こっているのかについていくつかのアイデアを与えますが、今私たちはどこにいますか?

興味深いのは、cd /proc/32619/cwdディレクトリをこの魔法の場所に変更できることです。コマンドを実行すると、まだパーティションにdf .あることがわかります。/home

$ pwd
/proc/32619/cwd
[saml@grinchy cwd]$ df -h .
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_grinchy-lv_home
                      245G  125G  108G  54% /home

どうしたの?

ディレクトリは削除されましたが、それを構成するinodeは削除されませんでした。これはコマンドを使用して確認できますstat。私たちが削除したディレクトリ内のシェルから:

$ stat .
  File: `.'
  Size: 0           Blocks: 8          IO Block: 4096   directory
Device: fd02h/64770d    Inode: 10486487    Links: 0
Access: (0775/drwxrwxr-x)  Uid: (  500/    saml)   Gid: (  501/    saml)
Access: 2013-05-18 07:48:52.674081972 -0400
Modify: 2013-05-18 07:48:44.378900038 -0400
Change: 2013-05-18 07:50:54.189747426 -0400

まだ使用しているinode 10486487があることがわかりますが、リンクが0つあることに注意してください。何かを削除すると、これが起こります。これを指すすべてのリンクが削除されるため、オペレーティングシステムはこの特定のインデックスノードを削除できます。

関連情報