FSDB(8)
FSDB(8)
НАЗВАНИЕ
fsdb - отладчик файловых систем.
СИНТАКСИС
/etc/fsdb special [-]
ОПИСАНИЕ
fsdb может быть использована для залатывания поврежденной файловой системы после сбоя. Она содержит средства преобразования индексов и номеров блоков в соответствующие адреса на диске. Она содержит также мнемонические смещения для получения доступа к различным частям индексных дескрипторов. Это существенно упрощает процесс корректировки структур управляющего блока или спуска по дереву файловой системы.
fsdb содержит в себе несколько процедур контроля ошибок для проверки адресов индексных дескрипторов и блоков. Эти процедуры можно отключить, вызвав fsdb с необязательным аргументом - или с символом O. (fsdb читает структуры размеров дескрипторов и файлов из суперблока файловой системы в качестве базиса для этой проверки.)
Все числа считаются по умолчанию десятичными. Восьмиричные числа распознаются по нулевому префиксу. Во время операций присваивания числа проверяются на ошибки усечения, возникающие из-за несоответствия исходных и результирующих размеров.
fsdb читает поблочно и поэтому может работать как с символьными, так и с блочными устройствами ввода/вывода. Для обращения к часто используемым блокам данных используется специальная процедура буферного управления, чтобы уменьшить количество системных вызовов операций чтения. Все операции присваивания сопровождаются немедленной записью в соответствующий блок.
Символы, распознаваемые fsdb:
# | абсолютный адрес |
i | преобразование индекса в адрес дескриптора |
b | преобразование к адресу блока |
d | смещение поля каталога |
+,- | адресная арифметика |
q | выход |
>,< | сохранение, восстановление адреса |
= | численное присваивание |
=+ | присваивание со сложением |
=- | присваивание с вычитанием |
=" | присваивание символьной строки |
O | переключатель проверки ошибок |
p | общие средства печати |
f | средство печати файлов |
B | байт |
W | слово |
D | двойное слово |
! | выход в оболочку |
Средства печати генерируют форматированный вывод различных типов. Перед началом печати текущий адрес нормализуется в подходящие пределы. По мере печати он увеличивается и принимает значение адреса последнего напечатанного элемента. Выдача может быть прекращена в любой момент введением символа удаления. Если за символом p следует число, то печатается ровно столько записей. Выполняется проверка на выход за границы блока, поскольку логический порядок блоков в общем случае не совпадает с физическим. Если встречается нулевой указатель, то печатаются все записи до конца текущего блока. Допустимые опции печати таковы:
i | печатать как индексный дескриптор |
d | печатать как каталог |
o | печатать в восьмиричном виде |
e | печатать десятичными словами |
c | печатать в символьном виде |
b | печатать восьмиричными байтами |
Символ f используется для печати блоков данных, связанных с текущим индексным дескриптором. Если за ним следует число, то печатается блок с этим номером. (Блоки нумеруются от нуля.) Нужная опция печати должна следовать за номером блока, если он задан, или за символом f. Это средство печати работает как для малых, так и для больших файлов. Оно осуществляет проверку специальных устройств и указателей блоков, которые используются для поиска данных и не должны быть нулевыми.
Точки, табуляции и пробелы могут использоваться в качестве разграничителей, но не обязательны. Строка, содержащая лишь символ перевода на новую строку, увеличит текущий адрес на размер типа последнего напечатанного элемента. То есть адрес будет установлен на следующий байт, слово, двойное слово, запись каталога или дескриптор, позволяя пользователь осуществлять продвижение по части файловой системы. Информация печатается в соответствии с типом данных. Байты, слова и двойные слова выводятся вместе с восьмиричным адресом, за которым следует восьмиричное или десятичное значение. Для значений в байтовом представлении или в виде двойных слов к адресу добавляются .B и .D соответственно. Каталоги печатаются в виде смещения поля каталога, за которым следуют десятичный индекс и символьное представление имени. Индексные дескрипторы печатаются с метками полей, описывающих каждый элемент.
Для описания текущего рабочего индексного дескриптора используется следующая мнемоника:
md | режим |
ln | указатель цепи (link count) |
uid | пользовательский идентификатор |
gid | групповой идентификатор |
sz | размер файла |
a# | номера блоков данных (0 - 12) |
at | время доступа |
mt | время модификации |
maj | главное (большее) число устройство |
min | малое ( меньшее) число устройства |
ПРИМЕРЫ
386i выдача индекса 386 в формате индексного дескриптора. При этом он становится текущим рабочим дескриптором. ln=4 изменение указателя цепи для рабочего индексного дескриптора на 4. ln=+1 увеличение этого указателя на 1. fc выдача в символьном ASCII виде нулевого блока файла, связанного с рабочим дескриптором. 2i.fd печать первых 32 записей каталога корневого дескриптора данной файловой системы. d5i.fc переустановка с текущего дескриптора на дескриптор, соответствующий пятой записи каталога (начиная с 0), найденной по приведенной выше команде. Первый логический блок файла после этого печатается в символьном виде. 512B.p0o печатает суперблок файловой системы в восьмиричном виде. 2i.a0b.d7=3 переустанавливает индекс седьмого поля каталога в корневом каталоге на 3. В этом примере демонстрируется также, как можно скомбинировать в одной командной строке несколько операций. d7.nm="name" переустанавливает поле имени в каталоге на заданную строку. Если первый символ - буква, то при использовании c nm кавычки необязательны. a2b.p0d печатает третий блок текущего индексного дескриптора в виде записей каталога.
СМ. ТАКЖЕ
, dir(3), filesystem(3).