내 Ubuntu 시스템에서는 을 prueba.txt
사용합니다 touch prueba.txt
. 을 사용하여 파일 통계를 표시하면 stat prueba.txt
출력은 다음과 같습니다.
File: prueba.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fc01h/64513d Inode: 4092 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-10-07 13:04:57.621272608 +0000
Modify: 2022-10-07 13:04:57.621272608 +0000
Change: 2022-10-07 13:04:57.621272608 +0000
Birth: 2022-10-07 13:04:57.621272608 +0000
그런 다음 를 사용하여 파일 내용을 인쇄 cat prueba.txt
한 다음 stat prueba.txt
다시 실행하면 출력은 다음과 같습니다.
File: prueba.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fc01h/64513d Inode: 4092 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-10-07 13:06:18.852005488 +0000
Modify: 2022-10-07 13:04:57.621272608 +0000
Change: 2022-10-07 13:04:57.621272608 +0000
Birth: 2022-10-07 13:04:57.621272608 +0000
시간 은 Access
변했지만 Change
시간은 변하지 않았습니다. 그러나 man 7 inode
이 파일의 메타데이터를 설명하는 항목에는 의미에 대한 다음 정보가 제공됩니다 Change
.
Last status change timestamp (ctime)
stat.st_ctime; statx.stx_ctime
This is the file's last status change timestamp. It is changed by writing or by setting inode informa‐
tion (i.e., owner, group, link count, mode, etc.).
제가 이해한 것이 맞다면 Change
파일 데이터가 있을 때마다 시간을 업데이트해야 합니다.또는 메타데이터(아마도) Access
메타데이터를 포함하여 수정되었습니다. 그렇다면 cat
파일이 메타데이터 값에 영향을 주지만 Access
프로세스에서 메타데이터는 변경되지 않는 이유는 무엇일까요? 이 항목이 무엇을 의미하는지 또는 어떤 방식으로 작동하는지 Change
오해했나요 ?man
cat
답변1
Linux는 각 파일에 대해 3개의 타임스탬프를 유지합니다.
- 시간: 파일 내용(데이터 자체)이 마지막으로 수정된 시간입니다. 를 통해 볼 수 있습니다.
ls -l
- 시간: 파일 콘텐츠 또는 파일 메타데이터(소유자, 그룹, 권한, 링크 수 등)가 마지막으로 변경된 시간입니다. 여기에는 타임스탬프가 포함되지 않습니다. 를 통해 볼 수 있습니다.
ls -lc
- 아르템: 내용을 읽기 위해 파일에 마지막으로 액세스한 시간입니다. 를 통해 볼 수 있습니다.
ls -lu
예상대로 atime 을 변경하여 파일을 읽습니다 cat
. 이 작업 중에 파일 내용이나 메타데이터가 변경되지 않으므로 해당 ctime이 수정되지 않습니다.