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