Computer >> 컴퓨터 >  >> 체계 >> Linux

Linux 파일 타임스탬프 이해:mtime, ctime 및 atime

Linux 운영 체제는 시스템의 각 파일에 대해 세 개의 타임스탬프를 추적합니다. 이 타임스탬프를 사용하면 파일이 마지막으로 업데이트된 시간을 확인할 수 있습니다. 그러나 그들은 모두 무엇을 의미합니까? 그리고 파일에 대한 이러한 시간을 어떻게 알 수 있습니까? 디렉토리와 관련하여 차이점이 있습니까?

atime, ctime 및 mtime을 이해하면 이러한 모든 질문에 답할 수 있습니다. 이것은 Unix 파일 시스템이 추적하는 세 가지 타임스탬프입니다. 변경된 사항과 시기에 대한 세부 정보가 필요한 경우 계속 읽으십시오.

세 가지 Unix 타임스탬프란 무엇입니까?

각 파일에는 3개의 타임스탬프가 연결되어 있습니다. Linux는 이를 epoch 이후 초를 측정하는 Unix 시간 형식으로 저장합니다. 세 가지 타임스탬프는 일반적으로 atime, ctime 및 mtime이라고 합니다.

mtime 가장 일반적이고 종종 가장 유용합니다. 수정된 시간을 나타냅니다. . 파일 내용이 디스크에 마지막으로 기록된 시간입니다.

ctime은 약간 다릅니다. 변경 시간을 의미합니다. . 이 타임스탬프는 소유권 및 권한과 같은 메타데이터 변경 사항을 추적합니다. 여기에는 최소한 일반적인 최신 Linux OS에서는 파일 이름 바꾸기가 포함됩니다. 그러나 파일의 내용이 변경될 때도 업데이트되므로 항상 mtime만큼 최신 상태를 유지합니다.

세 번째 타임스탬프는 시간입니다. , 누군가가 파일에 마지막으로 액세스한 시간을 저장합니다.

타임스탬프가 디렉토리에 적용되는 방식

Linux 디렉토리는 기본적으로 해당 디렉토리에 있는 파일 목록입니다. 따라서 디렉토리 내에 파일을 생성하면 해당 디렉토리의 mtime이 업데이트됩니다. ls를 사용하여 디렉토리의 파일 나열 예를 들어 명령은 액세스 시간을 업데이트합니다. 그리고 파일과 마찬가지로 디렉토리의 권한이나 이름을 변경하면 ctime이 업데이트됩니다.

생성 시간은 어떻습니까?

Linux가 단순히 생성 시간을 추적하지 않는다는 사실을 알게 되면 놀랄 수 있습니다. 처음에는 ctime 생성 시간을 나타냅니다. 마찬가지로 알아낼 수 있는 매우 유용한 것으로 생각할 수도 있습니다.

많은 응용 프로그램은 매번 처음부터 파일을 만들어 파일을 저장합니다. 이렇게 하면 생성 시간을 잘못 사용할 수 있습니다.

다른 타임스탬프를 보는 방법

타임스탬프 정보를 얻는 가장 간단한 방법은 ls 명령. 기본 긴 형식은 mtime에 대한 세부 정보를 표시합니다.

$ date
Sat Mar 6 16:57:01 GMT 2021
$ echo "hello, world" > tmp
$ ls -l tmp.txt
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

대신 -u를 사용하여 시간을 표시할 수 있습니다. 플래그:

$ date
Sat Mar 6 16:59:33 GMT 2021
$ cat tmp
hello, world
$ ls -lu tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp
$ ls -l tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

마지막 줄은 이 파일의 mtime이 atime과 다름을 확인합니다. 마지막으로 -c를 사용합니다. ctime을 보려면 플래그:

$ date
Sat Mar 6 17:02:34 GMT 2021
$ mv tmp tmp2
$ ls -lc tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 17:02 tmp2
$ ls -l tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp2
$ ls -lu tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp2

이번에는 파일을 수정한 다음 액세스한 다음 변경한 순서대로 세 번 모두 구별되고 정확함을 확인합니다.

ls의 대안은 stat 입니다. 명령. 이 명령은 파일의 inode에서 낮은 수준의 세부 정보를 표시합니다. 한 번에 세 번 모두 확인하기가 더 쉽습니다. 또한 직관적이지 않은 -u 문제를 해결합니다. 깃발. 다음은 동일한 파일에 대한 출력 예입니다.

$ stat tmp2
File: `tmp2'
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 327688 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu)
Access: 2021-03-06 16:59:45.000000000 +0000
Modify: 2021-03-06 16:57:59.000000000 +0000
Change: 2021-03-06 17:02:43.000000000 +0000

타임스탬프 업데이트 방법

터치 명령은 파일의 수정 및 액세스 시간을 변경합니다. 빈 파일을 생성하는 편리한 방법이기도 합니다. 파일이 이미 존재하지 않는 경우 수행할 수 있습니다.

touch tmp

기본적으로 mtime 및 atime을 현재 시간으로 설정합니다. -t 키를 사용하여 다른 시간을 설정할 수 있습니다. 플래그:

touch -t 202103061200 tmp

-m을 사용하여 mtime 또는 atime만 설정할 수도 있습니다. 및 -a 각각 플래그:

touch -t 202103061300 -m tmp

ctime은 atime 또는 mtime을 설정할 때 항상 업데이트됩니다.

타임스탬프를 기반으로 파일을 찾는 방법

찾기 명령은 타임스탬프에 작용하는 또 다른 도구입니다. atime, ctime 또는 mtime을 기준으로 파일을 필터링할 수 있습니다. 예:

find . -amin 15

정확히 15분 전에 액세스한 파일을 찾는 동안:

find . -mtime -2

지난 2일 이내에 수정된 파일을 찾습니다.

Linux는 모든 파일을 세 번 추적합니다.

가장 일반적으로 참조되는 파일 타임스탬프는 mtime입니다. 예를 들어 파일 목록에 표시되는 날짜와 시간입니다. 그러나 다른 두 타임스탬프도 유용할 수 있습니다. 이러한 타임스탬프가 의미하는 바를 이해한다면 말이죠. 특히 ctime은 변경을 나타냅니다. 창조가 아니라 시간 시간.

touch 및 stat와 같은 명령은 Linux 명령줄 도구 상자의 유용한 구성원입니다. 이 명령을 사용하면 새 파일을 빠르게 만들 수 있으므로 Linux 워크플로가 향상됩니다.