단지가 있습니다 세 에 의해 정의 된 파일의 각 저장 별개의 시간 값 POSIX 표준 : http://pubs.opengroup.org/onlinepubs/9699919799/ (참조 자료 정의 -> 4. 일반 개념 -> 4.8 파일 섹션을 타임스 업데이트)
각 파일에는 마지막 데이터 액세스 시간, 마지막 데이터 수정 시간 및 파일 상태가 마지막으로 변경된 시간의 세 가지 고유 한 타임 스탬프가 있습니다. 이 값은 <sys / stat.h>에 설명 된대로 파일 특성 구조 struct stat에 리턴됩니다 .
그리고 <sys / stat.h>에서 :
atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.
다음 예제는 atime , mtime 및 ctime 의 차이점을 보여줍니다. 이러한 예제는 GNU / Linux BASH에 있습니다. stat -x
Mac OS X 또는 다른 BSD Dist에서 사용할 수 있습니다 . 비슷한 출력 형식을 볼 수 있습니다.
$ stat --version
stat (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Michael Meskes.
$
$ touch test
$ stat test
File: `test'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:58:28.609223953 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800
파일이 방금 생성되면 세 개의 타임 스탬프가 동일합니다.
1. 시간
먼저 파일을 읽 거나 ( ) 인쇄 하거나 ( ) 다른 파일로 복사 하여 ( ) 파일의 데이터에 액세스 합시다 .less
vim
cat
cp
$ cat test #Nothing will be printed out, since the file is empty
$ stat test
File: `test'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800 <-- atime Changed!
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800
2. ctime
이제하도록 변경 허가를 (변경하여, 파일 상태를 chmod
() 또는 이름을 변경 mv
)
$ chmod u+x test
$ stat stet
File: `test'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0764/-rwxrw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:04:10.178285430 +0800 <-- ctime Changed!
$
$ mv test testing
$ stat testing
File: `testing'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0764/-rwxrw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:06:33.342207679 +0800 <-- ctime Changed again!
지금까지 파일 의 내용 ( data )은 파일을 작성할 때와 여전히 동일합니다.
3. mtime
마지막으로 파일을 편집하여 파일 내용을 수정 해 봅시다 .
$ echo 'Modify the DATA of the file' > testing
$ echo 'Modify the DATA of the file also change the file status' > testing
$ stat testing
File: `testing'
Size: 56 Blocks: 8 IO Block: 4096 regular file
Device: 811h/2065d Inode: 98828525 Links: 1
Access: (0764/-rwxrw-r--) Uid: ( 514/ rank) Gid: ( 514/ rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 11:09:48.247345148 +0800 <-- mtime Changed!
Change: 2014-03-16 11:09:48.247345148 +0800 <-- ctime also Changed!
4. 출생 시간
또한 최신 버전 stat
(예 : stat --version 8.13
Ubuntu 12.04)에는 네 번째 타임 스탬프 정보 ( 출생 시간 (파일 작성 시간))가 있습니다. 지금은 정확한 시간을 표시하지 않을 수도 있지만
$ stat --version
stat (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Michael Meskes.
$
$ stat birth_time
File: `birth_time'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 805h/2053d Inode: 4073946 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ bingyao) Gid: ( 1000/ bingyao)
Access: 2014-03-16 10:46:48.838718970 +0800
Modify: 2014-03-16 10:46:48.838718970 +0800
Change: 2014-03-16 10:46:48.838718970 +0800
Birth: -