См. также GNU truncate
команда:
truncate -s 2G some-file
Вместо cat
необходимо использовать touch
(или что-то, что вызывает запись), или явно объявление atime
в Вашей опции монтирования.
Использование Ubuntu relatime
как значение по умолчанию. Ядро Linux, на самом деле, использование relatime
как значение по умолчанию от версии 2.6.30 вперед. Это только обновляет определенные значения, когда к файлам получают доступ вместо всех. Это изменяет cat
поведение, таким образом, это не обновит время доступа. Это - значение по умолчанию в Ubuntu, монтируют опции. Единственный способ изменить время доступа касается файла (иначе вызывающий запись) вместо простого чтения.
Причиной позади этого является производительность. Если каждое чтение потребует записи, как POSIX требует, эффективность дисков и основанных на флэш-памяти устройств будет хуже. Это также кажется счетчиком producent в файловых системах только для чтения.
Существует набор дискуссии об этой теме в, Спрашивают Ubuntu и Суперпользователь:
Существуют 3, монтируют опции, о которых обычно необходимо знать при контакте с atime
. Вы знакомы с первыми 2 из страницы справочника монтирования
выборки
atime Do not use noatime feature, then the inode access time is controlled
by kernel defaults. See also the description for strictatime and
relatime mount options.
noatime
Do not update inode access times on this filesystem (e.g., for
faster access on the news spool to speed up news servers).
Другая опция Вы вероятны не знакомые с, и тот, вызывающий Ваше горе, является этим, который был значением по умолчанию начиная с ядра 2.6.30:
relatime
Update inode access times relative to modify or change time.
Access time is only updated if the previous access time was
earlier than the current modify or change time. (Similar to
noatime, but doesn't break mutt or other applications that need to
know if a file has been read since the last time it was
modified.)
Since Linux 2.6.30, the kernel defaults to the behavior provided
by this option (unless noatime was specified), and the
strictatime option is required to obtain traditional semantics. In
addition, since Linux 2.6.30, the file's last access time is
always updated if it is more than 1 day old.
Можно проверить, установлены ли эти опции в файловой системе путем взгляда под /proc/mounts
.
$ head -5 /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=3976812k,nr_inodes=994203,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
Различие с relatime
по сравнению с.noatime
это, это внесет изменения, но только когда текущее время доступа после предыдущего времени доступа.
Время доступа только обновляется, если предыдущее время доступа было ранее, чем ток изменяет или изменяет время. (Подобный noatime, но не повреждает дурака или другие приложения, которые должны знать, был ли файл считан с прошлого раза он был изменен.)
atime
. – Braiam 08.12.2013, 16:38