파일의 마지막 엑세스 시간, 수정 시간, 상태 수정 시간 등을 보는 방법이 없을까요?  ls에서 --time 옵션을 주면 atime, ctime, mtime 등을 볼 수 있습니다. 이에 대해 간단하게 알아보고 실습을 한 번 해 보겠습니다.

 


 먼저 ls의 --time=WORD 옵션을 봅시다. ls는 modification time (mtime)을 디폴트로 보내게 되는데요. 이를 access time, change time을 볼 때 --time=atime, --time=ctime 등의 옵션으로 바꿀 수 있습니다. 먼저, 1.txt에 대한 정보를 보겠습니다.

 

 

 atime은 1:59로 되어 있습니다.

 

 

 다음에 change time인 ctime도 1:59로 되어 있습니다.

 

 

 ls -l을 하면, 기본적으로 mtime을 얻어옵시다. 이 시간도 1:59로 되어 있습니다. 이제 몇 가지 작업을 해 보겠습니다.

 

 1.txt에 있는 내용을 보겠습니다. cat 1.txt입니다. 그러면, 파일에 접근한 셈이 됩니다. 따라서 atime이 1:59보다 최근의 시각으로 업데이트 됩니다.

 

 이제, ctime을 봅시다. 1:59로 그대로입니다. 이는, 파일의 상태도 변경되지 않았고, 파일에 write를 하지도 않았기 때문입니다. 그냥 cat을 한 것 뿐인데 바뀌었을 리가 없습니다.

 

 다시 ls -l을 해 보겠습니다. mtime 역시 바뀐 게 없습니다. 왜? 파일을 변경하지 않았기 때문입니다.

 

 이제, chmod 755 1.txt를 한 다음에 atime부터 조회해 보겠습니다. atime은 02:02로 되어 있습니다. 어? 변한 거 같지 않습니다. 파일의 메타 정보에 접근해서 변경했을 뿐입니다. 실제 파일에 접근하지 않았기 때문에 atime은 변하지 않았습니다.

 

 중요한 것은 ctime입니다. chmod가 파일의 내용 자체를 변경시키거나 접근하는 명령어는 아닙니다. 단지, 파일의 권한을 바꿀 뿐입니다. 따라서, 메타 데이터만 변경된 것이므로 ctime은 업데이트가 됩니다.

 

 

 다음에 ls -l을 호출해 보겠습니다. 그랬더니, 01:59로 되어 있습니다. 어라? 이는 파일의 내용이 변경되지 않았기 때문입니다.

 


 이제 echo 12345 > 1.txt를 입력해 보겠습니다. 어떻게 될까요? 1.txt가 02:21로 바뀌었네요. mtime이 최신 것으로 바뀌었는데요. 리다이렉션 1.txt 명령어로 파일의 내옹을 최신화 시켰기 때문입니다.

 

 ctime과 atime도 변했음을 알 수 있습니다. 이는 ctime이 파일에 뭔가를 쓸 때 변경되기 때문입니다. 그리고, 파일에 write를 할 때 이미 access를 했기 때문에 access time도 같이 업데이트 되게 됩니다. 이 셋에 대한 자세한 것은 man inode를 치면 나오니, 간단하게 보셔도 도움이 되지 않을까 싶습니다.