리눅스 파일에는 'atime', 'ctime', 'mtime' 3가지 시간 정보가 있다. 각각 Access Time, Change Time, Modify Time을 의미하는 시간이다.
파일 시스템에서 파일을 조회하거나 수정 날짜를 확인할 때, 이 세 가지 시간의 정확한 차이점을 알고 있어야 잘 못된 파일을 지우거나하는 일이 발생하지 않는다.
atime (Access Time)
atime은 파일에 마지막으로 접근(Access)한 시간을 기록한다.
파일이 어떤 명령어나 스크립트, 프로그램에 의해 열리거나 읽혔을 때 갱신된다. vi나 emac 같은 에디터 프로그램뿐만 아니라 cat, tail 같은 명령어에 의해 읽힌 경우에도 갱신된다.
Access Time의 경우 너무나도 자주 갱신이 된다. 파일에 접근할 때마다 inode에 갱신해줘야하기 때문에 애플리케이션의 성능 하락을 유발할 수 있다. 따라서 atime을 갱신하지 않는 설정을 고려해봐야 할 수 있다.
ctime (Change Time)
파일이 마지막으로 변경(Change)된 시간이 기록된다. (생성시간(create)으로 잘 못 기억하는 경우가 있으니 주의)
파일의 소유자가 변경되거나 접근 권한이 수정되는 등 파일의 inode 정보가 변경되었을 경우와 파일의 데이터가 변경되었을 경우 모두 갱신된다.
mtime (Modify Time)
파일이 마지막으로 수정(Modify)된 시간이 기록된다.
파일의 데이터가 수정되었을 때 갱신된다. ctime과 다르게 파일의 권한이나 소유자 정보 등이 수정되었을 경우에는 갱신되지 않는다.
조회방법
ls -l 명령으로 파일의 상세 정보를 출력할 때, mtime 값이 출력된다.
[root@myhost ~]# ls -l
-rw-r--r-- 1 root root 2 Feb 22 22:05 out
-u 옵션을 추가하면 atime이 출력된다.
[root@myhost ~]# ls -lu
-rw-r--r-- 1 root root 2 Feb 22 22:06 out
-c 옵션을 추가하면 ctime을 조회할 수 있다.
[root@myhost ~]# ls -lc
-rw-r--r-- 1 root root 2 Feb 22 22:05 out
혹은 stat 명령을 이용해서 한꺼번에 조회할 수도 있다.
[root@myhost ~]# stat out
File: ‘out’
Size: 2 Blocks: 0 IO Block: 4096 regular file
Device: 2h/2d Inode: 8444249301586396 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-02-22 22:06:03.029190700 +0900
Modify: 2022-02-22 22:05:59.909643200 +0900
Change: 2022-02-22 22:05:59.923357500 +0900
Birth: -
댓글