IIRC, когда-то был патч только для RedHat, который делал это настраиваемым в ядрах RedHat.
Инго Молнар предложил нечто подобное в 2007 году, но его патч не был объединен.
Текущие ядра используют фиксированный однодневный интервал, введенный коммитом 11ff6f05f1e836a6a02369a4c4b64757e484adc1 в марте 2009 г.
Выдержка из fs/inode.c:
/* * With relative atime, only update atime if the previous atime is * earlier than either the ctime or mtime or if at least a day has * passed since the last atime update. */ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, struct timespec now) { if (!(mnt->mnt_flags & MNT_RELATIME)) return 1; /* * Is mtime younger than atime? If yes, update atime: */ if (timespec_compare(&inode->i_mtime, &inode->i_atime) >= 0) return 1; /* * Is ctime younger than atime? If yes, update atime: */ if (timespec_compare(&inode->i_ctime, &inode->i_atime) >= 0) return 1; /* * Is the previous atime value older than a day? If yes, * update atime: */ if ((long)(now.tv_sec - inode->i_atime.tv_sec) >= 24*60*60) return 1; /* * Good, we can skip the atime update: */ return 0; }
Я не совсем уверен, что это также зависит от используемой файловой системы. Согласно linux-4.2.4/Documentation/filesystems/ocfs2.txt
, OCFS2
имеет atime_quantum
...
Вместо использования grep
вы можете использовать GNUsed
:
sed -e '/particular exception/,+3d' test.txt
Это находит строки, соответствующие particular exception
, и удаляет их и три строки после них.
Использованиеawk
:
$ awk -v n=3 -v p='particular exception' 'match($0,p) { skip=n+1 } --skip < 0' test.txt
line random text 1
line random text 2
line random text 3
....
line random text 14
line random text 15
line random text 16
.....
Количество строк конечного контекста, которые необходимо пропустить, задается в командной строке, например,. -v n=3
и регулярное выражение для соответствия также указывается в командной строке как -v p='expression'
.
Переменная skip
будет уменьшаться на единицу для каждой прочитанной строки, и скрипт будет печатать текущую строку всякий раз, когда переменная skip
меньше нуля. Когда интересующий шаблон найден, переменная skip
получает значение n + 1
, что означает, что текущая строка и n
другие строки будут пропущены.
match($0,p)
также может быть написано $0 ~ p
.