coreutils-8.4-37.el6.x86_64의 touch(1)입니까, 아니면 제 두뇌가 고장난 것입니까?
$ touch abc
$ LANG=C stat abc
File: `abc'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd04h/64772d Inode: 10485773 Links: 1
Access: (0664/-rw-rw-r--) Uid: (3060399/ nodakai) Gid: ( 418/ quant)
Access: 2016-10-14 18:42:06.189751847 +0800
Modify: 2016-10-14 18:42:06.189751847 +0800
Change: 2016-10-14 18:42:06.189751847 +0800
$ touch -a abc
$ LANG=C stat abc
File: `abc'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd04h/64772d Inode: 10485773 Links: 1
Access: (0664/-rw-rw-r--) Uid: (3060399/ nodakai) Gid: ( 418/ quant)
Access: 2016-10-14 18:42:17.374235446 +0800
Modify: 2016-10-14 18:42:06.189751847 +0800
Change: 2016-10-14 18:42:17.374235446 +0800
$ touch --help | grep 'access time'
-a change only the access time
보시다시피 atime뿐만 아니라 ctime도 업데이트됩니다 touch -a
! ? ! ?
차이점이 있다면 파일 시스템은 LVM을 통한 ext4입니다.
답변1
touch
파일 액세스 및 수정 시간을 변경하도록 지정되었습니다. 수정 시간을 변경하는 것은 파일 메타데이터 변경의 부작용이며 touch
이를 제어할 수 없습니다.futimens()
그리고utimensat()
) 기능이 사용되었습니다 touch
.
-a
-m
이 경우 이해할 수 있습니다. 기본적으로 touch
액세스 시간과 수정 시간이 변경됩니다(시스템은 변경 시간을 업데이트합니다). 사용하면 -a
액세스 시간만 변경되고, 사용되면 -m
수정 시간만 변경됩니다.
현재 시간이 아닌 다른 시간을 지정하면 차이가 나타납니다. 접속 및/또는 수정 시간은 지정한 값으로 변경되지만 변경 시간은 현재 시간으로 업데이트됩니다.