Если Вы хотите уменьшить вероятность кэширования VFS, увеличить давление кэша VFS путем настройки значения /proc/sys/vm/vfs_cache_pressure
(значение по умолчанию равняется 100). Это будет настойчиво исправлять dentries и inodes из памяти. 1000 могла бы быть хорошая начальная точка. В моей системе установка 1 000 уменьшает плиту приблизительно на 75% или около этого.
Обратите внимание, что это, вероятно, не, что Вы хотите сделать, как бы то ни было. Существует очень немного вариантов использования, что Вы хотите уменьшить использование кэш-памяти файловой системы - оно освобождено для использования программами, как только им нужно оно.
Если известно, что время не превышает одного часа, можно просто добавить 60, если результат отрицательный. Тем не менее, это не способ сделать это в любом случае. Есть несколько моментов, которые я хотел бы поднять:
позвольте i++
и позвольте l = j-k
, не используйте миллионы скобок $ l
массив длины 1, а затем доступ $ i
-й член. Вот почему это работает только для первой пары. для i в "$ {MMarray [@]}"; сделать...
и просто сохраните предыдущий. Что делать, если вы хотите получить все временные различия в секундах, по одному на строку:
find /some/location -type f -name '*your filter which files you want*' -printf '%T@\n' | sort -n | awk 'NR>1 { print $1-previous } {previous = $1}'
Что он делает? find
находит файлы и печатает метки времени unix. Если не указать -имя
, то появится список всех событий. -type f
означает только файлы, без каталогов. sort -n
сортирует время численно. awk
просто вычисляет и печатает различия.
Для среднего значения просто сохраните первую и последнюю дату. Например, для всех файлов в текущем каталоге:
find . -type f -printf '%T@\n' | sort -n | awk 'NR==1 { first = $1 } END{ print ($1-first)/(NR-1) }'
Результаты представляют собой десятичные числа в секундах, но вы можете просто записать int (($1-first )/( NR-1))
для целого числа или int (($1-first )/( NR-1) )/60
в течение минут.
Вероятно, вы хотите завершить сеанс упорядоченным образом. Этот ответ в SuperUser, по-видимому, обеспечивает следующее: https://superuser.com/questions/395820/how-to-properly-end-a-kde-session-from-shell-without-root-privileges
-121--77171-Происхождение и конструктивные особенности различны. Как правило, лучше разработать протокол с нуля, потому что тогда вы можете сделать его специально подходящим для того, что вам нужно, не имея проблем с устаревшими протоколами.
Я считаю, что этот выбор был связан с тем, что внутриядерная реализация доменных сокетов UNIX слишком отличается, чтобы позволить sane портирование на связь пользователя с ядром. Список протоколов для AF_NETLINK специально разработан для обеспечения иоктл-подобного управления. AF_UNIX даже не использует аргумент "protocol" для функции socket
. И если они каким-то образом расширили определение, чтобы разрешить дополнительные протоколы,вероятно, он нарушит существующие приложения, и будет очень неловко в ядре перенаправлять новые протоколы на управляющий код ядра. Кроме того, существует опасность дублирования этих двух функциональных возможностей (особенно с учетом того, что изначально AF_UNIX не разрабатывалась с учетом этого).
И наконец... Доменные сокеты UNIX используют файловую систему в качестве пространства имен (хотя существует взлом, допускающий «анонимные» сокеты). Таким образом, они сразу доступны всем пользователям, которые имеют разрешения на этот сокет - для связи с ядром необходимо иметь всегда открытый «файл» где-то в файловой системе (sys, вероятно,?), который пользователи будут использовать для подключения к ядру.
Короче говоря, они просто предназначены для разных вещей. Даже если вы можете повторно использовать AF_NETLINK для двух процессов в пространстве пользователя (это делается по-другому, чем в AF_UNIX), обратное на самом деле не сработает.