Это потому, что вы находитесь в каталоге, в который вы монтируетесь. Таким образом, вы по-прежнему ссылаетесь на содержимое исходного каталога через исходный каталог.
Вы можете увидеть точно такой же эффект, когда cd
попадаете в каталог, который затем удаляется.
$ pwd
/home/saml/dirtodel
$ rmdir ../dirtodel
$ pwd
/home/saml/dirtodel
Как это может быть? Я все еще в каталоге, который был только что удален. В чем дело?
В оболочке , которая все еще cd
в /home/saml/dirtodel
, запустите эту команду , чтобы узнать PID (идентификатор процесса) для его сессии Баша:
$ echo $$
32619
Теперь, если вы перейдете в каталог / proc этого PID, мы увидим, что происходит:
$ 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
Итак, что происходит?
Несмотря на то, что наш каталог был удален, инода, который его составляет, не было. Вы можете увидеть это с помощью 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
Мы можем видеть, что мы все еще используем индекс 10486487, но обратите внимание, что он имеет 0 ссылок. Вот что происходит, когда что-то удаляется. Все ссылки на него удаляются, и поэтому ОС может удалить этот особенный индекс.