다음 명령을 사용하여 현재 디렉터리에 디스크 이미지를 마운트하는 경우:
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
shell 에 있는 동안 /home/saml/dirtodel
다음 명령을 실행하여 bash 세션의 PID(프로세스 ID)를 찾습니다.
$ 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개 있다는 점에 유의하세요. 무언가를 삭제하면 이런 일이 발생합니다. 이를 가리키는 모든 링크가 제거되므로 운영 체제는 이 특정 인덱스 노드를 삭제할 수 있습니다.