활용하기

리눅스 파일 시스템의 atime, mtime, ctime

리눅스 atime mtime ctime 시각 표시 방법

리눅스의 파일 시스템에서는 윈도우의 ‘수정된 날짜’, ‘만든 날짜’와 같은 시간 표시 방법이 있습니다. 바로 atime, mtime, ctime으로 불리는 시각 정보(timestamp)입니다.

이러한 시각 정보는 inode(아이노드)에 기록됩니다. inode는 쉽게 말해 파일 마다 가지고 있는 일련의 메타 데이터이며, 파일이 위치한 실제 주소나 권한 정보, 링크 수나 파일 크기 정보 등을 가지고 있습니다.

각자의 시각 정보를 풀이해보겠습니다.

atime (last Access Time)

마지막으로 파일에 접근한 시각입니다.

시스템이나 응용 프로그램이 파일을 읽을 때 시각이 업데이트됩니다. 예를 들어 cat 명령어로 파일 내용을 출력하게 되었을 때 atime이 바뀌게 됩니다.

mtime (last Modification Time)

마지막으로 파일이 수정된 시각입니다.

텍스트 에디팅으로 파일에 내용을 추가하거나, 파일 사이즈를 줄이는 등의 파일 데이터가 변경될 때 업데이트됩니다.

ctime (last Change Time)

마지막으로 파일이 변경된 시각입니다.

mtime은 그저 파일의 데이터가 변경될 때만 시각이 기록되지만, ctime은 상기했던 inode 정보가 변경되었을 때에도 시각이 업데이트됩니다. inode 변경에는 파일의 권한이나 속성, 크기나 링크 정보 등이 해당됩니다.

예를 들면 chmod, chown 명령어를 사용했을 때에 권한 정보가 inode에 다시 업데이트되므로 ctime 값이 바뀌게 됩니다.

mtime과 마찬가지로 데이터 내용을 변경할 때에도 ctime이 변경됩니다.

시각 정보는 주로 디렉토리 내 파일 리스트를 출력할 때 자주 접할 수 있습니다.

일반적으로 ls 명령어의 출력 결과에서 나타나는 시각 정보는 mtime입니다.

$ ls -l
total 4
drwxrwxr-x. 2 user user 6 Jan 13 20:12 folder
-rwxrwxrwx. 1 user user 5 Jan 13 20:22 testfile

만약 atimectime을 보려면 어떻게 해야 할까요? 간단히 ls 명령어에 다음 옵션을 붙여 확인할 수 있습니다.

  • atime : ls -lu
  • ctime : ls -lc

각 파일이나 디렉토리의 시각 정보를 조금 더 자세히 보려면 stat 명령어를 사용하면 됩니다.

$ stat testfile 
  File: ‘testfile’
  Size: 0          Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d Inode: 101254431   Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-01-13 19:15:59.084552439 +0900
Modify: 2019-01-13 19:15:59.084552439 +0900
Change: 2019-01-13 19:15:59.084552439 +0900
 Birth: -

Access와 Modify, Change의 값은 각각 atime, mtime, ctime을 의미합니다.

stat 명령어에 대한 자세한 내용은 다음 포스트를 참고해보세요.

JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

Recent Posts

[안드로이드] INSTALL_FAILED_INSUFFICIENT_STORAGE 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…

5개월 ago

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

7개월 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

7개월 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

7개월 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

7개월 ago

윈도우 11 설치 시 Microsoft 계정 로그인 없이 로컬 계정 만들기

언제부턴가 윈도우 11을 처음 설치할 때 마이크로소프트(Microsoft) 계정 로그인을 강제로 요구하게 되었습니다. 물론 마이크로소프트 계정이…

1년 ago