현재 디렉터리에 마운트할 때 CD 이미지 파일이 나열되지 않는 이유는 무엇입니까?

현재 디렉터리에 마운트할 때 CD 이미지 파일이 나열되지 않는 이유는 무엇입니까?

다음 명령을 사용하여 현재 디렉터리에 디스크 이미지를 마운트하는 경우:

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

어떻게 그럴 수 있습니까? 방금 삭제한 디렉토리에 아직 남아 있습니다. 어떻게 되어가나요?

cdshell 에 있는 동안 /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개 있다는 점에 유의하세요. 무언가를 삭제하면 이런 일이 발생합니다. 이를 가리키는 모든 링크가 제거되므로 운영 체제는 이 특정 인덱스 노드를 삭제할 수 있습니다.

관련 정보