次のコマンドを使用して現在のディレクトリにディスクイメージをマウントする場合:
sudo mount -o loop -t iso9660 wall.iso ./
現在のディレクトリのファイルを一覧表示すると、wall.isoのみが返されます。
ディスクイメージの実際のファイルを表示するには、まずcd
ディレクトリを終了してからそのディレクトリに戻る必要があります。
注:wall.isoが次の名前のファイルを計算することを既に知っている場合サブディレクトリls
、すでにリストできるディレクトリをリストするのも難しいですcd subdir
。
初めて呼び出すときにファイルが返されないのはなぜですかls
?ls
ディレクトリを変更したときにのみ更新されるキャッシュから読みますか?
答え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つあることに注意してください。何かを削除すると、これが起こります。これを指すすべてのリンクが削除されるため、オペレーティングシステムはこの特定のインデックスノードを削除できます。