| HOME / 정보공유 / AIX 명령어 모음

fsdb
fsdb fsdb 명령 목적 파일 시스템을 디버그합니다. 구문
fsdbFileSystem [ - ]
설명
fsdb 명령은 FileSystem 매개변수가 지정하는 파일 시스템을 조사하고 변경하고 디버그 할 수 있도록 합니다. 명령은 파일 시스템 오브젝트(블록, i 노드 또는 디렉토리)에 대한 액세스 권한을 제공합니다. fsdb 명령을 사용하여 파일 시스템을 검사 및 패치할 수 있습니다. 파일 시스템의 키 구성요소는 기호로 참조될 수 있습니다. 이 특징은 제어 블록 항목을 정정하고 파일 시스템 트리를 내려오는데 필요한 프로시저를 단순화합니다.
파일 시스템을 검사하려면, 파일 시스템을 블록 장치 이름, 원시 장치 이름 또는 마운트된 파일 시스템 이름을 사용하여 지정하십시오. 마지막의 경우, fsdb 명령은 /etc/filesystems 파일을 읽어 연관된 파일 시스템 이름을 판별합니다. 마운트된 파일 시스템은 수정할 수 없습니다.
fsdb 명령은 JFS 파일 시스템과 JFS2 파일 시스템에 대해 다른 인터페이스를 갖고 있습니다. 다음은 JFS 파일 시스템에서의 fsdb 사용법을 설명합니다. JFS2 부속 명령에 대한 자세한 사항은 JFS2 부속 명령을 참조하십시오.
fsbd 명령의 부속 명령은 파일 시스템의 정보를 액세스하거나 열람하거나 변경할 수 있도록 합니다. 사용자가 부속 명령에 입력하는 숫자에 0을 접두어로 사용하여 8진수를 표시하거나 0x를 접두어로 표시하여 16진수로 표시하지 않을 경우, 그 숫자는 디폴트로 10진수로 표시됩니다. 모든 주소는 16진수로 인쇄됩니다.
fsdb 명령은 한 번에 한 블록씩 읽고 쓰므로, 이 명령은 블록 I/O 외에 원시 I/O에 대해서도 작업합니다.
사용 방법
JFS는 POWER 기반 플랫폼에서만 사용할 수 있고 JFS2는 두 개의 플랫폼 모두에서 사용할 수 있습니다.
플래그
- i 노드 및 블록 주소 검증에 사용되는 오류 검사 루틴을 사용 불가능하게 합니다. O 부속 명령은 이 루틴을 온 및 오프로 전환합니다. 이 루틴이 수행 중이면, fsdb 명령은 수퍼 블록에서 파일 시스템 데이터를 읽습니다. fsdb 명령은 확보한 정보를 사용하여 다양한 파일 시스템 오브젝트에 성공적으로 액세스하여 다양한 오류 검사를 수행할 수 있습니다.
부속 명령
fsdb 부속 명령은 파일 시스템에서 정보를 찾고 표시하고 수정하는 요구입니다. 부속 명령의 주요 범주는 다음과 같습니다.
범주 기능
위치 파일 시스템에서 정보에 액세스.
표시 파일 시스템에서 정보 열람.
수정 파일 시스템에서 정보를 변경.
또한, 몇 개의 기타 부속 명령이 있습니다.
위치 부속 명령
다음 두 가지 유형의 위치 부속 명령이 있습니다.
Number[ I | M | i | b ]
또는
dDirectorySlot
첫번째 유형은 숫자로 구성되며, 선택적으로, 다음에 주소 스펙이 이어집니다. 주소 스펙은 선행 번호의 해석 방법을 정의합니다. Number 변수에 대한 네 가지 다른 해석에 상응하는 다음 네 가지 주소 스펙이 있습니다.
I I 노드 맵 블록 번호.
M 디스크 맵 블록 번호.
i i 노드 번호.
b 프래그먼트 번호.
주소 스펙(또는 주소 스펙 생략)에 따라, 이 유형의 위치 부속 명령은 다음과 같이 정보에 액세스합니다.
Number Number 매개변수가 지정하는 절대적 바이트 오프셋에 있는 데이터를 액세스합니다.
MapBlockNumberI MapBlockNumber 변수가 표시하는 i 노드 맵 블록을 액세스합니다.
MapBlockNumberM MapBlockNumber 변수가 표시하는 디스크 맵 블록을 액세스합니다.
InodeNumberi InodeNumber 변수가 표시하는 i 노드를 액세스합니다.
FragmentNumberb FragmentNumber 변수가 표시하는 파일 시스템 블록을 액세스합니다. 프래그먼트 번호는 블록 주소와 코드화 길이로 구성됩니다. 완전한 프래그먼트 주소의 길이는 32비트입니다. 하위 28비트가 시작 프래그먼트 주소입니다. 프래그먼트 길이는 나머지 4비트에 코드화됩니다. 이 길이는 전체 블록 미만의 프래그먼트의 수로서 코드화됩니다. 예를 들어, 1024바이트의 프래그먼트로 구성된 파일 시스템에서, 주소 0x2000010f는 1 KB 블록 번호 0x10f에서 시작하고 길이가 2KB인 블록을 참조합니다. 대조적으로, 512바이트 프래그먼트의 파일 시스템에서 주소 0x2000010f는 512 바이트 블록 0x10f에서 시작하고 길이가 3072(512 * 6) 바이트인 블록을 참조합니다.
두 번째 유형의 위치 부속 명령은 디렉토리 항목에 액세스하는 데 사용됩니다. 부속 명령은 문자 d와 그 다음에 오는 디렉토리 슬롯 번호로 구성됩니다. 디렉토리 슬롯 번호는 연관된 i 노드의 각 블록에 대해 0에서 시작합니다.
이 유형의 위치 부속 명령은 다음과 같이 정보에 액세스합니다.
dDirectorySlot 현재 i 노드에서 DirectorySlot 변수가 색인하는 디렉토리 항목을 액세스합니다. 이 위치 부속 명령을 사용하면 할당된 디렉토리 항목만 조작할 수 있습니다.
표시 부속 명령
주소 스펙과 관련된 정보를 열람하려면 표시 기능 중 하나로 구성된 표시 부속 명령을 다음과 같은 표시 형식 중 하나와 함께 사용하십시오.
p[Number]{ i | d | o | e | c | b | y | M | I | x | s | D }
또는
f[Number]{ i | d | o | e | c | b | y | M | I | x | s | D }
표시 기능에는 다음과 같은 것이 있습니다.
(.,.)p 일반 기능을 표시합니다. 일반 표시 부속 명령을 사용하여 현재의 주소와 관련된 데이터를 표시하십시오. p 기호 다음에 숫자를 입력하면, fsdb 명령은 그 수만큼의 항목을 표시합니다. 블록 경계 오버플로우를 발견하기 위한 검사가 이루어집니다. 0 또는 *(별표)를 입력하면, fsdb 명령은 현재 프래그먼트의 끝까지에 있는 모든 항목을 표시합니다.
f 파일 기능을 표시합니다. 파일 표시 부속 명령을 사용하여 현재의 i 노드와 연관된 데이터 블록을 표시하십시오. f 기호 다음에 숫자를 입력하면, fsdb 명령은 그 수 만큼의 블록을 표시합니다. 블록 번호지정은 0에서부터 시작합니다. 표시 형식은 블록 번호를 따릅니다. 블록 번호 없이 f를 입력하면 fsdb 명령은 디폴트로 현재 i 노드에 대해 블록 0을 표시합니다.
이들 기능에 대한 표시 형식은 다음과 같습니다.
i i 노드로 표시합니다.
d 디렉토리로 표시합니다.
o 8진의 단어로 표시합니다.
e 10진 단어로 표시합니다.
c 문자로 표시합니다.
b 8진 바이트로 표시합니다.
y 16진 바이트로 표시합니다.
M 디스크 맵 항목으로 표시합니다.
I I 노드 맵 항목으로 표시합니다.
x 16진 단어로 표시합니다.
S 단일 간접 블록들로 표시합니다.
D 이중 간접 블록들로 표시합니다.
선택된 표시 기능과 표시 형식은 명시적으로 변경될 때까지 fsdb 명령 처리 동안 유효합니다. 사용자가 지정한 주소가 적합한 경계에 해당하지 않을 경우, 부적절한 정렬을 나타내는 오류 메세지를 수신할 수 있습니다.
Number, MapBlockNumberI, 또는 FragmentNumberb 위치 부속 명령을 사용하여 i 노드 정보를 액세스하면, 데이터를 단계적으로 실행하고 각 바이트, 단어, 또는 이중 단어를 조사할 수 있습니다. 다음 부속 명령 중 하나를 입력하여 원하는 표시 모드를 선택하십시오.
B 바이트 모드로 표시를 시작합니다.
D 2배 단어 모드로 표시를 시작합니다.
W 단어 모드로 표시를 시작합니다.
정보 사이를 앞뒤로 이동할 수 있습니다. 경계가 표시화면과 함께 이동하며, 표시된 최종 항목의 주소에 남습니다. 언제라도 INTERRUPT 키를 눌러 출력을 종료할 수 있습니다. 다음 기호를 사용하여 정보 사이를 이동할 수 있습니다.
+ Number 현재 지정된 유효한 장치의 수를 앞으로 이동합니다.
-Number 현재 지정된 유효한 장치 수를 뒤로 이동합니다.
다음 기호를 사용하여 현재의 주소를 저장해서 편리하게 그 주소로 리턴할 수 있습니다.
> 현재 주소를 저장합니다.
< 이전에 저장된 주소로 리턴합니다.
점, 탭 및 공백을 부속 명령 분리문자로 사용할 수 있으나, 이 분리문자들은 부속 명령으로부터 16진 자릿수로 해석할 수 있는 16진수를 분리하는 데에만 필요합니다. Enter 키를 누르면(즉, 공백 행을 입력하면) 표시된 최종 데이터 유형의 크기만큼 현재 주소가 증분됩니다. 즉, 주소가 다음 바이트, 단어, 2배 단어, 디렉토리 항목 또는 i 노드로 설정되어, 사용자가 파일 시스템 영역을 단계별로 지나갈 수 있도록 합니다.
fsdb 명령은 데이터 유형에 적합한 형식으로 정보를 표시합니다. 바이트, 단어 및 2배 단어는 16진수 주소로 표시되며 그 다음에 그 주소에 있는 데이터(16진수로 표시) 및 10진수 등가가 괄호로 묶여 표시됩니다. fsdb 명령은 .B 또는 .D 접미사를 주소의 끝에 추가하여 바이트 또는 2배 단어 값의 표시를 나타냅니다. 이는 디렉토리를 뒤에 10진수 i 노드 및 항목 이름의 문자 표현이 오는 디렉토리 슬롯 오프셋으로 표시합니다. 이는 각 요소를 설명하는 레이블된 필드를 사용하여 i 노드를 표시합니다. 환경 변수는 날짜 및 시간 필드의 형식을 제어합니다.
수정 부속 명령
(i 노드에 있는 필드 및 디렉토리에 있는 필드에 대한) 필드 스펙을 사용하여 주소 스펙과 관련된 정보를 수정할 수 있습니다. 새로운 값을 지정하는 일반 양식은 mnemonic operator new-value이며, 여기서 mnemonic 매개변수는 다음 리스트에 설명된 필드 중 하나를 표시합니다.
다음 니모닉(mnemonics)이 i 노드의 필드 이름에 사용되며, 현재의 작업 i 노드를 참조합니다.
md 사용권한 모드
ln 링크 계수
uid 사용자 번호
gid 그룹 번호
sz 파일 크기
aNumber 데이터 블록 번호(0~8). 여기서 Number 매개변수는 위치 부속 명령일 수 있습니다.
at 액세스 시간
mt 수정 시간
maj 주 장치 번호
min 부 장치 번호
다음 니모닉은 i 노드와 디스크 맵을 참조합니다.
mf 맵 사용 가능 계수
ms 맵 크기
mp 영구 할당 비트 맵
mw 작업 할당 비트 맵
다음 니모닉(mnemonics)은 디렉토리에 있는 필드 이름에 사용됩니다.
rl 디렉토리 항목 레코드의 길이
nl 디렉토리 이름의 길이
nm 디렉토리 이름
Operator 매개변수의 유효 값은 다음과 같습니다.
주: 파일 시스템은 수정하기 전에 마운트 해제해야 됩니다.
= New-Value 매개변수를 지정된 Mnemonic 매개변수에 지정합니다.
=+ Mnemonic 매개변수를 지정된 New-Value 매개변수 만큼 증분시킵니다. 디폴트 New-Value 매개변수는 값 1입니다.
=- Mnemonic을 지정된 New-Value만큼 감소시킵니다. 디폴트 New-Value는 값 1입니다.
=" New-Value 매개변수가 지정하는 문자열을 지정한 Mnemonic 매개변수에 지정합니다. 현재 표시 형식이 디렉토리에 대한 d 주소 스펙이고 니모닉을 지정하지 않은 경우, 디렉토리 이름이 변경됩니다. 새로운 디렉토리 이름이 이전 디렉토리 이름보다 길 수는 없습니다.
기타 부속 명령
기타 부속 명령은 다음과 같습니다.
q 중지.
xn 디렉토리를 n 바이트만큼 확장하며, 여기서 n에 디렉토리의 현재 크기를 더한 바이트는 현재 디렉토리의 프래그먼트 바이트보다 크지 않습니다.
! 쉘로 빠져나옵니다.
O 오류 검사를 토글합니다.
JFS2 부속 명령
이러한 부속 명령은 전체 이름을 입력하거나 이름의 서브세트를 사용하여 입력할 수 있습니다. 최소한 굵은체 문자는 입력해야 합니다.
a[lter] 디스크 데이터를 변경합니다.
b[tree] [] btree 노드를 표시합니다.
dir[ectory] [] 디렉토리 항목을 표시합니다.
d[isplay] [ [ [ []]]] 데이터를 표시합니다.
dm[ap] [] dmap 페이지를 표시합니다.
dt[ree] [] dtree 노드를 표시합니다.
h[elp] [] 부속 명령에 대한 도움말을 제공합니다.
ia[g] [] [a | ] IAG 페이지를 표시합니다.
i[node] [] [a | ] i 노드를 표시합니다.
q[uit] fsdb를 종료합니다.
su[perblock] [p | s] 수퍼 블록을 표시합니다.
a[lter]
여기에서,
블록 번호(십진수)
블록 내의 오프셋(16진)
16진 숫자의 스트링
디스크 데이터를 변경합니다. 은 숫자를 짝수 갯수만큼 포함해야 합니다.
b[tree] []
블록 번호(십진수)
블록 내의 오프셋(16진)
btree의 한 노드를 표시하고 btree를 네비게이트할 수 있는 부속 명령 모드로 들어갑니다.
부속 명령:
l 왼쪽 시블링을 방문합니다.
m 현재 노드를 수정합니다.
p 상위 노드를 방문합니다.
r 오른쪽 시블링을 방문합니다.
[0-9] n번째 하위 노드를 방문합니다.
x 부속 명령 모드를 종료합니다.
dir[ectory] []
디렉토리의 i 노드 번호(십진수)
번호, 현재는 영(0)이어야 합니다.
디렉토리 항목을 표시합니다.
d[isplay] [ [ [[]]]]
블록 번호(십진수)
블록 내의 오프셋(16진)
데이터를 표시하는 형식(아래 참조)
표시할 오브젝트의 수(십진수)
데이터를 여러 형식으로 표시합니다.
형식은 다음 중 하나일 수 있습니다.
a ascii
i inode struct dinode
I i-node allocation map iag_t
s superblock struct superblock
x hexadecimal
dm[ap] []
이 블록 번호를 설명하는 dmap 페이지를 표시합니다.
부속 명령:
m 현재 노드를 수정합니다.
u 상위 레벨 dmap 페이지를 방문합니다.
l 왼쪽 시블링을 방문합니다.
r 오른쪽 시블링을 방문합니다.
w wmap을 표시합니다.
p pmap을 표시합니다.
s stree를 표시합니다.
x 부속 명령 모드를 종료합니다.
dt[ree] []
디렉토리의 i 노드 번호(십진수)
파일 세트 번호, 현재는 영(0)이어야 합니다.
디렉토리 btree의 루트를 표시하고 btree를 네비게이트할 수 있는 부속 명령 모드로 들어갑니다.
부속 명령:
l 왼쪽 시블링을 방문합니다.
m 현재 노드를 수정합니다.
p 상위 노드(상위 디렉토리가 아닌)를 방문합니다.
r 오른쪽 시블링을 방문합니다.
[0-9] n 번째 하위 노드를 방문합니다.
x 부속 명령 모드를 종료합니다.
h[elp] []
명령 이름
도움말 텍스트를 인쇄합니다. 매개변수가 없으면 모든 명령을 나열합니다.
ia[g] [] [a | ]
IAG 번호(십진수)
a 총계 i 노드 테이블을 사용합니다.
파일 세트 번호(현재는 영(0)이어야 합니다.)
iag 정보를 표시하고 부속 명령 모드로 들어갑니다.
부속 명령:
e i 노드 확장 맵을 표시/수정합니다.
m iag를 수정합니다.
p 영구적인 맵을 표시/수정합니다.
w 작업 중인 맵을 표시/수정합니다.
i[node] [] [a | ]
i 노드 번호(십진수)
a 총계 i 노드 테이블을 사용합니다.
fileset 파일 세트 번호(현재는 영(0)이어야 합니다.)
i 노드 정보를 표시하고 부속 명령 모드로 들어갑니다.
부속 명령:
e i 노드의 확장된 속성을 표시/수정합니다.
m i 노드를 수정합니다.
t i 노드의 b-tree를 표시/수정합니다.
q[uit]
fsdb를 종료합니다.
su[perblock] [p | s]
p 1차 수퍼블록을 표시합니다.
s 2차 수퍼블록을 표시합니다.
수퍼블록 데이터를 표시합니다.
예제
다음 예제는 JFS 파일 시스템에서 fsdb 명령을 시작한 후 사용할 수 있는 부속 명령을 표시합니다.
I 노드를 표시하려면, 다음과 같이 입력하십시오.
386i
이 명령은 i 노드 386을 i 노드 형식으로 표시합니다. 이제 이것이 현재의 i 노드가 됩니다.
현재의 i 노드에 대한 링크 계수 값을 4로 변경하려면, 다음과 같이 입력하십시오.
ln=4
현재 i 노드의 링크 계수를 값 1만큼 증가시키려면, 다음과 같이 입력하십시오.
ln=+1
현재 i 노드와 연관된 파일의 부분을 표시하려면, 다음과 같이 입력하십시오.
fc
이 명령은 현재 i 노드와 연관된 파일의 블록 0을 ASCII 바이트로 표시합니다.
디렉토리의 항목을 표시하려면, 다음과 같이 입력하십시오.
2i.fd
이것은 현재 i 노드를 루트 i 노드(i 노드 2)로 변경한 후 디렉토리 항목을 그 i 노드와 연관된 첫번째 블록에 표시합니다. 표시된 하나 이상의 최종 항목이 i 노드 번호 0(제로)을 가질 수 있습니다. 이것은 미사용 디렉토리 블록입니다. 그러한 항목은 다음 예에서와 같이 조작할 수 없습니다.
디렉토리 트리의 레벨을 내려가려면, 다음과 같이 입력하십시오.
d5i.fc
이 명령은 현재 i 노드를 디렉토리 항목 5와 연관된 i 노드로 변경합니다. 그 다음, 파일의 첫번째 블록을 ASCII 텍스트로 표시합니다(fc). 디렉토리 항목은 0으로부터 시작하여 번호가 지정됩니다.
블록 번호를 알고 있는 블록을 표시하려면, 다음과 같이 입력하십시오.
1b.p0o
이 명령은 파일 시스템의 수퍼 블록(블록 1)을 8진수로 표시합니다.
디렉토리 항목의 i 노드를 변경하려면, 다음과 같이 입력하십시오.
2i.a0b.d7=3
이 명령은 루트 디렉토리에서 디렉토리 항목 7의 i 노드(2i)를 3으로 변경합니다. 이 예제는 또한 여러 개의 조작이 한 행에 조합되는 방법을 표시합니다.
디렉토리 항목의 파일 이름을 변경하려면, 다음과 같이 입력하십시오.
d7.nm="chap1.rec"
이 명령은 디렉토리 항목 7의 이름 필드를 chap1.rec로 변경합니다.
현재 i 노드와 연관된 파일 중 주어진 블록을 표시하려면, 다음과 같이 입력하십시오.
a2b.p0d
이 명령은 현재 i 노드의 블록 2를 디렉토리 항목으로서 표시합니다.
블록 7의 단일 간접 블록 내용을 표시하려면, 다음과 같이 입력하십시오.
7b. p0S
이 명령은 블록 7에 단일 간접 블록이 있는 i 노드에 할당된 블록 번호를 표시합니다.
디스크 맵의 첫 페이지를 표시하려면, 다음과 같이 입력하십시오.
OM
영구 블록 할당 맵의 처음 10 단어를 16진수로 표시하려면, 다음과 같이 입력하십시오.
mp1.p10x
이 명령은 현재 주소, 예를 들면 0M에서의 할당 비트 맵을 보여줍니다.
파일
/usr/sbin fsdb 명령을 포함합니다.
/etc/filesystems 파일 시스템에 관한 정보를 포함합니다.
관련 정보
dfsck 명령, fsck 명령.
dir 파일, filsys.h 파일.
environment 기타 기능.
read 서브루틴.