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
変更時間のみが変更されます。
現在時刻以外の時刻を指定すると差が出ます。接続および/または変更時間は指定した値に変更されますが、変更時間は現在の時間に更新されます。