나는 명령을 사용해 보았습니다.
ls --time=atime
한 디렉토리에서는 작동하지만 다른 디렉토리에서는 작동하지 않습니다. vim, evince 및 기타 응용 프로그램에서 특정 파일을 열었지만 명령 후에 파일 액세스 시간이 변경되지 않습니다.
액세스 시간은 입력할 때 변경되지만 touch file.txt
입력할 때는 vim file.txt
변경되지 않습니다 .
여기에 문제가 있나요?
답변1
기본 마운트 옵션을 사용하면 Linux에서 액세스 시간이 특별한 방식으로 처리됩니다.
relatime
– 이 옵션으로 마운트된 파일 시스템은 액세스 시간(업데이트 발생 전)이 수정 시간보다 빠른 경우 액세스 시간이 업데이트되도록 합니다. 이는 atime 업데이트로 인한 쓰기를 크게 줄여줍니다.
이것relatime
마운트 옵션이 기본값으로 설정되어 있습니다.~부터리눅스 커널 2.6.30. 이것이 바로 ls --time=atime
당신이 기대하는 것이 나열되지 않은 이유입니다.
해결책:atime에 엄격한(레거시) 동작을 사용하려면 다음을 사용하십시오.strictatime
설치 옵션(예: /etc/fstab
)
노트:Atime 업데이트를 완전히 비활성화하려면 다음을 사용할 수 있습니다.noatime
.
답변2
일부 파일 시스템에 대해서는 액세스 시간 로깅을 끌 수 있습니다( noatime
에서 확인 /etc/fstab
). 이를 테스트하려면 시도한 touch -a file; ls -l --time=atime file
다음 touch -a file; ls -l --time=atime file
변경되는지 확인하기 위해 반복할 수 있습니다.
동작 ls
은 다음과 같이 설명됩니다 man ls
. ls -l --time=atime
날짜/시간 열에 액세스 시간을 표시합니다. 이 키를 기준으로 정렬하려면 --sort=time
을 사용해야 합니다.
"시간이 변경되지 않았습니다"라는 말이 동일한 결과를 표시한다는 의미라면 이는 파일 시스템이 atime을 비활성화했기 때문 /etc/fstab
이거나(참고자료 참조) 액세스 시간이 실제로 수정 시간과 동일하기 때문입니다(매우 일반적임).
알아채다체크리스트파일이 정말아니요액세스 시간 변경 - 파일에는 액세스할 수 없습니다 ls
.아이노드 캐시.
답변3
이와 같은 테스트에 플래그를 추가하면 초 및 하위 초를 볼 --full-time
수 ls
있으므로 분 경계에 의해 제한되지 않고 효과를 확인할 수 있습니다.