Как подключить блочные устройства в Linux

Я обычно использую grep -o для этого:

grep -o '<td id="latest_button">..................................................'

Или в расширенном режиме:

grep -E -o '<td id="latest_button">.{50}'

Конечно, вы также получаете сам тег.

0
09.02.2020, 19:39
1 ответ

Никто еще не ответил на этот вопрос, но я придумал решение, так что отвечайте:

Я думаю, что наиболее правильным способом является использование /sys/class/block/*, который содержит (символических ссылок на )доступных блочных устройств.

У него также есть свои разделы, которые вы захотите игнорировать и которые можно идентифицировать по наличию файла partition. Этот файл недокументирован, поэтому YMMV.

Если они вам понадобятся позже, вы можете получить разделы определенных устройств, выполнив поиск каталогов с файлом partition. например /sys/devices/**/sda/*/partition. Файл также содержит номер раздела . Такой способ означает, что вам не нужно ничего знать о схемах именования устройств/разделов ядра, поэтому я рекомендую его.

Обратите внимание, что /sys/blockне имеет разделов, по крайней мере, в моей системе, но вы не должны полагаться на это.

После получения доступных блочных устройств вы, вероятно, захотите что-то с ними сделать, поэтому, чтобы получить их файлы устройств , вы можете прочитать major:minorиз недокументированного файла devи просто найти соответствующее устройство в /dev.

Если вам нужны их размеры, вы можете использовать недокументированный файл size, который содержит device size / 512. Всегда 512. Это тоже есть в разделах. Разделы также имеют поле start, которое соответствует partition start / 512на диске. Они «задокументированы» в этом забытом патче, который, если верить, означает, что эти файлы были стабильными и недокументированными уже около 20 лет. Итак.. ‍♀️

Если вам нужны модели устройств , вы можете использовать аналогичный недокументированный файл ../../modelотносительно устройства в /sys/devices/. Это может быть задокументировано здесь , но я, честно говоря, не могу сказать, применимо ли это здесь или нет.

Вы также можете получить имя каталога устройства, т.е. /sys/devices/**/sda— это полный путь к блочному устройству, а имя sda, вероятно, существует в /dev.

Но я бы не стал полагаться на это, технически /devможет иметь причудливые имена для вещей, поэтому я рекомендую искать dev для соответствия major:minor, чтобы не зависеть от имен файлов устройств.


Некоторая информация об этом задокументирована здесь , но

0
28.04.2021, 23:24

Теги

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