고양이가 접근 시간을 바꾸지 않는 이유는 무엇입니까? 빈 파일 장치 : 803h /

cat 파일에 대한 두 번째 호출은 액세스 시간을 업데이트하지 않습니다. 파일 내용이 표시 될 때마다 액세스 시간이 업데이트 될 것으로 기대했습니다.

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

액세스 시간을 오해하고 있습니까? 두 고양이 통화의 차이점은 무엇입니까?

터치 테스트
$ 통계 테스트
  파일 :`test '
  크기 : 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 테스트
$ 통계 테스트
  파일 :`test '
  크기 : 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
 출생 :-

$ 고양이 테스트
테스트

$ 통계 테스트
  파일 :`test '
  크기 : 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
 출생 :-

$ 고양이 테스트
테스트

$ 통계 테스트
  파일 :`test '
  크기 : 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
 출생 :-



답변

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

한때 비판

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

그러나 시간 업데이트를 해제하면 POSIX 호환 및 일부 응용 프로그램, 특히 mutt 메일 리더 (일부 구성) 및 일부 파일 사용 감시 유틸리티 (특히 tmpwatch)가 손상됩니다. 최악의 경우, 시간을 업데이트하지 않으면 일부 백업 프로그램이 파일을 백업하지 못할 수 있습니다.

리눅스 커널 개발자 인 잉고 몰나 (Ingo Molnár)는 “아마도 가장 어리석은 유닉스 디자인 아이디어”라고 덧붙였다. 이미 캐시되어 있고 캐시에서 읽는 모든 파일에 대해 디스크에 쓰기를 수행하십시오! ‘ “

Atime 업데이트는 오늘날 Linux가 가지고있는 최대 IO 성능 부족입니다. atime에 업데이트를 제거하기 것은 우리에게 지난 10 년간의 모든 페이지 캐시의 속도 향상,보다 일상 리눅스 성능을 줄 것이다 결합을 .

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이 예상대로 액세스 시간을 업데이트하지 않는 이유입니다.


답변