해당 inode 번호의 경로를 아는 방법

해당 inode 번호의 경로를 아는 방법

인덱스 노드 참조를 알고 있다면, 즉

struct inode *inode;

struct dentry 구조에는 d_iname 변수의 특정 dentry에 대한 경로 정보가 포함됩니다.

&inode->i_dentry 매핑에서 해당 inode의 경로를 어떻게 알 수 있나요? 또한 struct inode에서 struct dentry로 매핑하는 방법은 무엇입니까?

답변1

일반적으로 할 수 없습니다. inode와 디렉토리 항목 사이에는 일대일 대응이 없습니다.

$ touch file1.txt
$ ln file1.txt file2.txt
$ ls -li file*.txt
1332145968 -rw-r--r-- 2 mark mark 0 Oct 17 17:02 file1.txt
1332145968 -rw-r--r-- 2 mark mark 0 Oct 17 17:02 file2.txt

inode에 대한 "실제" 경로는 무엇입니까 1332145968?

$ rm file2.txt 
$ tail -f file1.txt &
[1] 7781
$ rm file1.txt

지금은 무엇입니까? 보시다시피, inode는 1332145968여전히 사용 중이지만 lsof경로가 없습니다.

답변2

d_entry의 d_parent 필드를 사용하고 이름을 저장하여 경로를 추적할 수 있습니다. 그러면 파일 시스템의 루트로 이동합니다. 그러나 inode 객체가 마운트된 파일 시스템에 속하는 경우 주의하세요. 이 경우 역추적은 마운트 지점에서 중지됩니다.

관련 정보