리눅스의 파일 시스템에서는 윈도우의 ‘수정된 날짜’, ‘만든 날짜’와 같은 시간 표시 방법이 있습니다. 바로 atime, mtime, ctime으로 불리는 시각 정보(timestamp)입니다.
이러한 시각 정보는 inode(아이노드)에 기록됩니다. inode는 쉽게 말해 파일 마다 가지고 있는 일련의 메타 데이터이며, 파일이 위치한 실제 주소나 권한 정보, 링크 수나 파일 크기 정보 등을 가지고 있습니다.
각자의 시각 정보를 풀이해보겠습니다.
마지막으로 파일에 접근한 시각입니다.
시스템이나 응용 프로그램이 파일을 읽을 때 시각이 업데이트됩니다. 예를 들어 cat
명령어로 파일 내용을 출력하게 되었을 때 atime이 바뀌게 됩니다.
마지막으로 파일이 수정된 시각입니다.
텍스트 에디팅으로 파일에 내용을 추가하거나, 파일 사이즈를 줄이는 등의 파일 데이터가 변경될 때 업데이트됩니다.
마지막으로 파일이 변경된 시각입니다.
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
만약 atime과 ctime을 보려면 어떻게 해야 할까요? 간단히 ls
명령어에 다음 옵션을 붙여 확인할 수 있습니다.
각 파일이나 디렉토리의 시각 정보를 조금 더 자세히 보려면 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
명령어에 대한 자세한 내용은 다음 포스트를 참고해보세요.
Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…