고양이가 접근 시간을 변경하지 않는 이유는 무엇입니까?

고양이가 접근 시간을 변경하지 않는 이유는 무엇입니까?

파일을 분류하는 두 번째 호출은 액세스 시간을 업데이트하지 않습니다. 파일 내용이 표시될 때마다 액세스 시간이 업데이트될 것으로 예상했습니다.

웹 브라우저에서 파일을 열면 동일한 동작이 나타납니다. 액세스 시간이 지속적으로 업데이트되지 않습니다.

제가 접속시간을 잘못 알고 있는 걸까요? 두 고양이 호출의 차이점은 무엇입니까?

$ 터치 테스트
$ 통계 테스트
  파일: `테스트'
  크기: 0 블록: 0 IO 블록: 4096 일반 빈 파일
장치: 803h/2051d Inode: 152694 링크: 1
액세스: (0664/-rw-rw-r--) Uid: ( 1001/ aaron) Gid: ( 1001/ aaron)
접속 : 2012-08-21 11:05:40.586020996 +0200
수정: 2012-08-21 11:05:40.586020996 +0200
변경: 2012-08-21 11:05:40.586020996 +0200
 출생: -

$ vim 테스트
$ 통계 테스트
  파일: `테스트'
  크기: 5개 블록: 8개 IO 블록: 4096 일반 파일
장치: 803h/2051d Inode: 152694 링크: 1
액세스: (0664/-rw-rw-r--) Uid: ( 1001/ aaron) Gid: ( 1001/ aaron)
접속 : 2012-08-21 11:05:52.890021630 +0200
수정: 2012-08-21 11:06:31.606023626 +0200
변경 : 2012-08-21 11:06:31.638023629 +0200
 출생: -

$ 고양이 테스트
시험

$ 통계 테스트
  파일: `테스트'
  크기: 5개 블록: 8개 IO 블록: 4096 일반 파일
장치: 803h/2051d Inode: 152694 링크: 1
액세스: (0664/-rw-rw-r--) Uid: ( 1001/ aaron) Gid: ( 1001/ aaron)
접속 : 2012-08-21 11:06:44.662024298 +0200
수정: 2012-08-21 11:06:31.606023626 +0200
변경 : 2012-08-21 11:06:31.638023629 +0200
 출생: -

$ 고양이 테스트
시험

$ 통계 테스트
  파일: `테스트'
  크기: 5개 블록: 8개 IO 블록: 4096 일반 파일
장치: 803h/2051d Inode: 152694 링크: 1
액세스: (0664/-rw-rw-r--) Uid: ( 1001/ aaron) Gid: ( 1001/ aaron)
접속 : 2012-08-21 11:06:44.662024298 +0200
수정: 2012-08-21 11:06:31.606023626 +0200
변경 : 2012-08-21 11:06:31.638023629 +0200
 출생: -

답변1

http://en.wikipedia.org/wiki/Stat_(system_call)

atime에 대한 비판

파일에 쓰면 mtime과 ctime이 변경되고, 파일을 읽으면 atime이 변경됩니다. 결과적으로 POSIX 호환 시스템에서는 파일을 읽으면 쓰기가 발생하는데 이는 비판을 받았습니다. 이 동작은 일반적으로 /etc/fstab에 마운트 옵션을 추가하여 비활성화할 수 있습니다.

그러나 시간 업데이트를 끄면 POSIX 규정 준수가 중단되고 일부 애플리케이션, 특히 mutt 메일 리더(일부 구성의 경우) 및 일부 파일 사용량 감시 유틸리티(예: tmpwatch)가 중단됩니다. 최악의 경우 atime을 업데이트하지 않으면 일부 백업 프로그램이 파일을 백업하지 못할 수 있습니다.

Linux 커널 개발자 Ingo Molnár는 atime을 "아마도 역대 가장 어리석은 Unix 디자인 아이디어"라고 말하며 다음과 같이 덧붙였습니다. 그리고 이미 캐시되어 있고 캐시에서 읽은 모든 파일에 대해 디스크에 쓰기를 수행하세요!'" 그는 성능에 미치는 영향을 다음과 같이 강조했습니다.

Atime 업데이트는 오늘날 Linux가 겪고 있는 가장 큰 IO 성능 결함입니다. Atime 업데이트를 제거하면 지난 10년 동안의 모든 페이지 캐시 속도 향상보다 일상적인 Linux 성능이 향상될 것입니다.결합된.

noatime 또는 relatime이 커널의 기본 마운트 옵션인지 어떻게 알 수 있나요?

man mount
....
   relatime
          Update inode access times relative to  modify  or  change  time.
          Access time is only updated if the previous access time was ear‐
          lier than the current modify or change time. (Similar  to  noat‐
          ime,  but  doesn't break mutt or other applications that need to
          know if a file has been read since the last time  it  was  modi‐
          fied.)

          Since Linux 2.6.30, the kernel defaults to the behavior provided
          by this option (unless noatime was  specified), and the stricta‐
          time  option  is  required  to  obtain traditional semantics. In
          addition, since Linux 2.6.30, the file's  last  access  time  is
          always  updated  if  it  is more than 1 day old.
....

이것이 특정 파티션이 마운트된 방식이며 cat이 예상한 대로 액세스 시간을 업데이트하지 않는 이유입니다.

관련 정보