Как мне прикоснуться к каталогу (а не к файлам, которые он содержит)?

Предполагая, что у вас есть закрытый ключ SSH id_rsa , вы можете извлечь из него открытый ключ следующим образом:

openssl rsa -in id_rsa -pubout -out id_rsa.pub.pem

Я понимаю OP спросил о преобразовании открытого ключа, так что это не совсем ответ на вопрос, однако я подумал, что это все равно будет полезно для некоторых.

Также обратите внимание, что эта команда приводит к формату открытого ключа PEM, чего обычно и ожидает OpenSSL. С другой стороны, ответ Брайана приводит к созданию файла в формате RSAPublicKey, который не является нормальным форматом, ожидаемым OpenSSL (хотя более поздние версии, очевидно, могут читать его с помощью флага -RSAPublicKey_in ). Чтобы преобразовать, вы можете сделать это:

openssl rsa -RSAPublicKey_in -in id_rsa.rsapub.pem -pubout -out id_rsa.pub.pem
6
11.07.2015, 02:02
1 ответ

vmtouchопределенно НЕ справится с этим. vmtouchвыполняет open(2)и mmap(2)для файлов, которые вы указываете.

Даже если вы заставите ядро ​​кэшировать readdir(2), это по-прежнему будет линейной операцией, и во многих случаях все равно попадет на диск:

In the current VFS readdir operation, the low-level file system is always called, even if the entire directory is in cache.

(07.08.2017 18 :40 UTC последующее наблюдение):

ls -lделает гораздо больше, чем просто readdir. readdir(2)в любом случае устарел, readdir(3)является оболочкой для (f)statв каталоге и getdentsв каталоге. Параметр -lдля lsтакже вызывает lstatдля каждой записи в нем.

getdentsсам по себе является просто оболочкой для всего, что данная файловая система предоставляет для указателей .iterate_sharedи .iterateна операции файловой структуры каталога. В случае ext4это завершается ext4_readdir.

Некоторые файловые системы реализуют кэширование на этом уровне. (NFS — очень наглядный пример ), но другие могут по-прежнему поражать диск.

В качестве корня вашего первоначального вопроса вы могли бы написать какой-нибудь демон, который постоянно продолжает работать getdentsв заданном каталоге, но иначе невозможно закрепить эти элементы dentry в кеше ядра, и возможно, что ядро ​​полностью игнорирует, что кэш из отдельного потока (зависит от файловой системы ).

Обратим внимание на ext4на мгновение: если файловая система имеет функцию dir_index, вы можете выполнить chattr +I dirдля каталога, чтобы пометить каталог как htree -индексированный (очень маленькие каталоги используют это кеш, если установлена ​​функция файловой системы)

2
27.01.2020, 20:30

Теги

Похожие вопросы