2009. 3. 31.

VI 편집기 단계별 가이드

[vi 1단계]

1. 명령행에서 vi test.txt 해서 vi를 시작합니다.

2. vi 에는 3가지 모드가 있습니다.한번씩 눌러보세요.이거눌렀다,저것 눌렀다...

(1)명령모드: ESC 키 vi 화면 좌측하단에 아무표시도 없습니다.

(2)입력모드: i 키 vi 화면 좌측하단에 -INSERT- 표시가 나타납니다.

(3)ex모드: Shift + : 키 vi 화면 좌측하단에 : 표시가 나타납니다.
.... (#!!!-ESC 키를 꼭 눌러서 명령모드로 바꾼후 해야합니다.)

3. i 키를 누르고(입력모드) 아무거나 2~3줄 입력합니다.

4. 방향키를 눌러 상하좌우로 커서를 움직여 보세요.

5. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 wq를 입력해 보세요.

6. 자판의 키를 누르면서 어떤일이 벌어지는지 감이 쬐금 올때까지만 계속해보시기 바랍니다.

##1단계에서 여러분이 알게된 명령어##

명령모드( ESC ) 화살표 방향키 커서 이동하기
입력모드( i )
ex모드( Shift + : ) wq 저장하고 종료하기





[vi 2단계]

1. 명령행에서 vi test.txt 해서 1단계서 만든것을 다시 엽니다.

2. 첫번째 라인에 커서를 위치시킵니다.

3. yy 를 누릅니다.(y를 두번 누르면 됩니다)-복사하기 명령입니다.

4. p 를 누릅니다.(3번이상 눌러봅니다)-복사한것 붙혀넣기 명령입니다.

5. x 를 누릅니다.(3번이상 눌러봅니다)-삭제명령입니다.그것도 한글자씩 삭제하기 명령.

6. u 를 누릅니다.(3번이상 눌러봅니다)-되살리기 명령입니다.

7. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 wq를 입력합니다.

##2단계에서 여러분이 알게된 명령어##

명령모드( ESC ) 화살표 방향키 커서 이동
yy 복사(한줄)
p 붙히기(커서아래에)
x 삭제(한글자)
u 되살리기
입력모드( i )
ex모드( Shift + : ) wq 저장하고 종료하기






[vi 3단계]

1. 명령행에서 vi test.txt 해서 2단계까지 작업한것을 다시 엽니다.

2. 첫번째 라인에 커서를 위치시킵니다.(화살표 방향키 이용)

3. i를 누르고 windows라고 입력합니다.enter키를 두세번 누른후 다시 windows라고 입력, 3번정도 이과정을 반복합니다.

4. ESC 키를 눌러 명령모드로 바꾼후 커서를 windows라는 문구 맨앞에 위치시킨후 Shift + r 을 누릅니다.(vi 화면 하단에 -REPLACE-라는 문구가 나타날 것입니다.)

5. linuxvi 라고 입력해보세요.(기존 windows가 linuxvi라고 교체되는 것을 볼수 있을 것입니다.)

6. Shift + : 키(ex모드)를 눌러 명령모드로 바꾼후 set nu 라고 입력합니다.(라인에 번호가 매겨집니다.)

7. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 wq를 입력합니다.

##3단계에서 여러분이 알게된 명령어##

명령모드( ESC ) 화살표 방향키 커서 이동
yy 복사(한줄)
p 붙히기(커서아래에)
x 삭제(한글자)
u 되살리기
R 교체
입력모드( i )
ex모드( Shift + : ) wq 저장하고 종료
set nu 라인에 번호매기기






[vi 4단계]

1. 명령행에서 vi test.txt 해서 3단계까지 작업한것을 다시 엽니다.

2. linuxvi 문구중 v자에 커서를 위치시킵니다.(화살표 방향키 이용)

3. i를 누르고 space bar 를 눌러 linux 와 vi 를 구분합니다.
....다시 ESC 키를 누른후 linux 맨앞에 커서를 위치시킵니다.

4. yw 를 누른후 p 를 두세번 천천히 눌러봅니다. (linux라는 단어가 계속 붙혀넣기 될것입니다.)

5. 자 이제 dw 를 눌러보세요.붙혀넣기 되었던 linux 단어가 삭제 될것입니다.)

6. 아무라인에나 커서를 위치시킵니다.

7. dd를 눌러보세요.(한라인통째로 삭제가 될것입니다.
.. 이것이 바로 한줄 통째 복사 명령어인 .yy의 반대명령어입니다.)

8. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 q!를 입력하세요.
.. (이명령을 주고 vi 를 빠져 나오면 방금했던 작업들이 저장되지 않습니다.)

##4단계에서 여러분이 알게된 명령어##

명령모드( ESC ) 화살표 방향키 커서 이동
yy 복사(한줄)
yw 복사(한단어)
p 붙히기(커서아래에)
x 삭제(한글자)
dw 삭제(한단어)
dd 삭제(한라인)
u 되살리기
R 교체
입력모드( i )
ex모드( Shift + : ) wq 저장하고 종료
q! 저장않고 종료
set nu 라인에 번호매기기






[vi 5단계]

1. 명령행에서 vi test.txt 해서 4단계까지 작업한것을 다시 엽니다.

2. 첫번째 라인에 커서를 위치시키고 3yy를 누릅니다(3줄이 한꺼번에 복사되어집니다.).

3. p를 3번이상 눌러보세요.

4. 3dd 를 누릅니다.(3줄씩 한꺼번에 지워지는 것을 볼수 있습니다.)

5. / (Slash) 를 누른후 (검색모드입니다.vi 화면하단에 / 표시가 나타납니다.)
.. linux라고 입력한후 enter 를 치세요다.그러면 linux 라는 단어가 있는곳으로 이동합니다.
.. 그다음 linux라는 단어로 이동하고자 할때는 n 을 누르면 됩니다.
.. 다시 역으로 올라가고자 하려면 Shift + n 을 누르면됩니다.
.. (#!!! - / 대신 ? 을 누르면 현재 커서위치부터 위쪽으로 검색해 올갑니다.

6. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 w test2.tst를 입력합니다.

7. vi 에서 빠져나온후 ls 명령을 내려보면 test2.txt 라는 파일이q 새로생긴것을 알 수있습니다.

##5단계에서 여러분이 알게된 명령어##

명령모드( ESC ) 화살표 방향키 커서 이동
yy 복사(한줄)
nyy 복사(n 라인만큼)
yw 복사(한단어)
p 붙히기(커서아래에)
x 삭제(한글자)
dw 삭제(한단어)
dd 삭제(한라인)
ndd 삭제(n 라인만큼)
u 되살리기
R 교체
/ 검색
입력모드( i )
ex모드( Shift + : ) wq 저장하고 종료
wq test2.txt test2.txt 파일명으로 저장
q! 저장않고 종료
set nu 라인에 번호매기기
1단계부터 5단계 까지 나온 명령들만 여러분이 익히면 vi 명령어의 99%를 배운것입니다.
나머지 1%는 지금까지 분류된 범위에서 조금씩 첨가되는 명령이라 보면 됩니다.
조금더 상황에 맞게 세분화 시킨 명령어들이면서,더 작업을 빨리 할 수 있게끔 하는 명령어들
말입니다.방향키 만으로도 얼마든지 이동이 가능하지만 라인의 끝으로 단번에 이동하거나
한페이지씩 이동하거나 범위를 설정한 만큼만 복사합니다거나..등등..이 있다고 보면 됩니다.
물론 앞으로 지금까지 해온것에 조금씩 하나하나씩 첨가해 나간다면 어느새 vi 에 익숙해진
여러분의 빠른 손놀림을 보게 될것입니다...:)





[vi PowerUP 6단계]

1. 명령행에서 vi powerupvi.txt 해서 세로운 파일을 여세요.

2. 첫번째 라인에 커서를 위치시키고 입력모드( i )에서 linuxvi linuxvi linuxvi linuxvi linuxvi 라고
.. 입력하고 명령모드로 전환(ESC)후 이것을 복사(yy)하여 붙혀넣기(p)해서 5줄을 만듭니다.

3. j,k,h,l 순으로 마구마구 눌러보면서 커서가 어떻게 움직이나 잘 보세요.

4. w를 한번 두번 세번 마구마구 눌러보세요.한단어씩 이동하죠.
.. 자.그럼 이젠 b를 한번 두번 세번 마구마구 눌러보세요.역시 한단어씩 이동하는데 아까와 반대로
.. 움직이죠.지금은 한칸씩 이동이나 단어단위 이동이나 별차이 없이 느껴지실지도 모르지만 라인수
..많아지고 한라인이 무진장 긴문장을 접하고 그 가운데 있는 문자를 수정해야 할경우 큰 도움을 볼것
.. 입니다...:)

5. ex모드로( shift + : ) 전환후 : w linuxvi.txt 라고 명령해 보세요.

6. 명령모드(ESC)로 전환후 커서를 마지막라인으로 이동시킨후 o(알파벳입니다.숫자 0 가 아니고,,)를
.. 누르고, windows windows windows windows windows 라고 입력하고 명령모드로 전환(ESC)후 이것을
.. 복사(yy)하여 붙혀넣기(p)해서 5줄을 만듭니다.

7. ex모드로( shift + : ) 전환후 : w linux-windows.txt 라고 명령해 보세요.

8. :wq 하고 저장후 나와서 ls 해 보시면 powerupvi.txt 이외에 linuxvi.txt 와 linux-windows.txt 파일이
.. 추가로 생긴것을 볼 수 있으실 겁니다.

##powerup 6단계에서 여러분이 알게된 명령어##

명령모드( ESC ) j 아래로 이동
k 위로 이동
h 좌로 이동
l 우로 이동
w 한단어씩 정방향으로 이동
b 한단어씩 역방향으로 이동
입력모드( o ) 현재라인 아래 입력모드
ex모드( Shift + : ) w 새로운 이름으로 파일저장하기








[vi PowerUP 7단계]

1. 명령행에서 vi linux-windows.txt 해서 세로운 파일을 여세요.

2. linuxvi 의 마지막 라인의 끝으로 이동후 J (대문자)를 눌러 봅니다.라인 붙히기 입니다.

3. 이제 0(아라비아 숫자)를 눌러 보세요.라인 맨앞으로 이동 할 것입니다. 이젠 $ 를 눌러보세요.
.. 라인의 맨끝으로 이동 할 것입니다.이두가지 명령역시 w,b와 잘 사용하면 프로그램 코딩시 한라인이
.. 엄청길때 원하는 위치로 방향키나,j.k.h.l 보다 신속히 원하는 위치로 이동시켜 주기때문에 무척 편리하게
.. 쓰실 수 있을 것입니다.

4. 이젠다시 1G를 눌러 보세요.글구 $G를 눌러 보세요.계속 번갈아 가면서 눌러 보세요..
.. 어떤 변화가 있나..이것은 파일의 처음과 끝으로의 이동입니다.
.. 라인수가 작을때나 별쓰임새가 없지만 http.conf와 같이 라인수가 1000라인 이상 넘어가는 파일등에서
.. 간혹 마지막 부분의 설정파일을 보면서 고쳐야 할경우이나 마지막 부분에 뭔가 작업을 해야 할경우..
.. 매우 유용합니다..pageup/pagedown 보다 빠르죠.단칼이니까..-_-''

5. 자 위에서 pageup/pagedown키로 한화면씩 이동한다고 했죠.근데 제가 모시고 있는 심사부님말로는
...진정한 vi의 고수는 옆에서 봤을때 키보드에서 손이 움직이는 모습이 보이지 않아야 한다라는 가르침을
...주시더군요..결국 vi의 고수들은 자판의 오른쪽에 위치하여 손의 움직임이 보이게 하는 방향키나
...pageup/pagedown 키를 만지지 않아야 한다는 것이죠...-_-''..따라서 손의 움직임을 보이게 하는
...pageup/pagedown키 대신 손의 움직임을 최소화 시켜줄 단축키를 알아보죠.다음 단계에서...vi 고수라..

6.ex모드( shift + : )로 전환후 : set nu 해서 라인수가 나오게 합니다.
...그리고 : 5 라고 명령후 커서위치를 확인합니다. : 1 이라고 명령후 커서위치를 확인합니다.
...이 명령어 쓰임은 보통은 http.conf등과 같은 설정화일을 변경후 데몬을 다시구동시킬때 잘못된 구문이
...있을시엔 문제가 있는 라인수가 나오게 됩니다.이때 바로 이명령어를 유용하게 쓰는 겁니다.
...파일을 열고 : 에러라인수를 입력하면 바로 그곳으로 커서가 이동하죠...
...유용하게 활용하시고 벌레 많이 잡으세요.....:)

7.저장하고 종료합니다.

##powerup 7단계에서 여러분이 알게된 명령어##

명령모드( ESC ) j 아래로 이동
k 위로 이동
h 좌로 이동
l 우로 이동
w 한단어씩 정방향으로 이동
b 한단어씩 역방향으로 이동
J 라인 붙히기
0(아라비아 숫자) 라인 맨앞으로 이동
$ 라인 맨끝으로 이동
1G 파일의 첫라인으로 이동
$G 또는 G 파일의 끝라인으로 이동
pageup키 한화면 위로 이동
pagedown키 한화면 아래로 이동
입력모드( o ) 현재라인 아래 입력모드
ex모드( Shift + : ) w 새로운 이름으로 파일저장하기
n(원하는 아라비아 숫자) 이동하고자 하는 라인위치로 이동








[vi PowerUP 8단계]

1. 명령행에서 cp /etc/httpd/conf/httpd.conf ./testsample.txt 라고 명령주시고요,

2. vi testsample.txt 해서 파일을 여시구요.

3. 전단계에서 파일의 라인수가 적어서 제대로 확인못한 $G,1G,pageup키,pagedown키를 눌러보세요.
... 마음껏..원본파일이 아니니까..막지워도 보구요..지금까지 기억나는 명령어 다 써보세요....
... 100라인씩 막 지워도 보고 복사도 해보고 .....마구마구...

4. 이제 다시 마음을 가다듬고.Ctrl + f 해보시고 이번엔 Ctrl + b 해보세요.
... 이두가지가 손의 움직임을 최소화 시켜 줄 pagedown/pageup 를 대치합니다...:)

5. 근데...Ctrl + f 후엔 커서가 화면의 첫라인에 위치하고 Ctrl + b 후엔 화면의 마지막 라인에 위치하죠.
... 이때 H,L,M(모두 대문자입니다.)을 눌러보세요.여러번 눌러보세요..감이 잡히시죠..
... [H]move to Home - top line on screen,[L]move to Last line on screen,
... [M]move to Middle line on screen의 약자인것이....

6. O(대문자 알파벳)를 눌러보세요.입력커서가 현재라인의 위로 이동하는것을 볼수 있습니다.
...아무거나 입력해보고,

7. 다시 명령모드로 변경후 이번엔 a를 눌러보자.i를 눌렀을때와는 틀리게 커서뒤에서 입력모드가
...시작됨을 알수 있을 것입니다.

8.다시 명령모드로 변경후 커서의 위치를 라인의 중간에 위치 시키고, I(알파벳 대문자)를 눌러보고,
...다시 명령모드로 전환후 A(알파벳 대문자)를 눌러 보세요.
...아까와는 반대로 라인의 끝에서 입력모드가 시작됨을 알수 있을 것입니다.
...대부분의 단순 입력모드로 i를 많이 이용하고 추가라인 입력시엔 o를 많이 이용하므로
...적어도 i 와 o를 이용한 입력모드는 꼭 익숙하게 사용하실 수 있도록 익혀두시면 좋습니다.

7.저장하고 종료합니다.

##powerup 8단계에서 여러분이 알게된 명령어##

명령모드( ESC ) j 아래로 이동
k 위로 이동
h 좌로 이동
l 우로 이동
w 한단어씩 정방향으로 이동
b 한단어씩 역방향으로 이동
J 라인 붙히기
0(아라비아 숫자) 라인 맨앞으로 이동
$ 라인 맨끝으로 이동
1G 파일의 첫라인으로 이동
$G 파일의 끝라인으로 이동
pageup키 한화면 위로 이동
pagedown키 한화면 아래로 이동
Ctrl + b 한화면 위로 이동
Ctrl + f 한화면 아래로 이동
H 현재화면 첫라인으로 이동
M 현재화면 중간라인으로 이동
L 현재화면 마지막라인으로 이동
입력모드( o ) 현재라인 아래 입력모드
입력모드( O ) 현재라인 위 입력모드
입력모드( a ) 커서뒤 입력모드
입력모드( I ) 현재라인 맨앞 입력모드
입력모드( A ) 현재라인 맨뒤 입력모드
ex모드( Shift + : ) w 새로운 이름으로 파일저장하기
n(원하는 아라비아 숫자) 이동하고자 하는 라인위치로 이동








[vi PowerUP 9단계]

1. 명령행에서 vi linux-windows.txt 파일을 여세요,

2. 그동안 놀고 있었던 마우스를 이용해 첫번째 라인을 블럭으로 지정후 휠마우스나 3버튼이면
....가운데버튼을 2버튼이면 양쪽마우스버튼을 동시에 눌러보세요.블럭으로 범위가 지정됐던 영역이
....붙혀넣기가 되는것을 보실 수 있습니다.마우스로 원하는 범위지정을 한만큼 복사하기가 진행됨을
....볼수 있을 것입니다.
....그러나 vi 고수는 손의 움직임이 보이면 안되는 법...-.-

3. vi 의 visual 모드가 바로 고수를 위한 해답입니다.

4. 명령모드로 전환후 첫번째 라인 맨앞으로 이동후 v 를 누러보세요.화면 아래쪽 좌측에 -- VISUAL --
... 표시가 나타날 것입니다. 그리고 j.k.h.l을 이용해 커서를 움직여보세요.범위가 지정됨을 알수 있습니다.
... k를 눌러 범위를 linux라는 단어까지만 지정되게 한후 y를 한번누른후 라인맨끝으로 이동후 p를
... 눌러보세요.마우스를 이용해서 범위설정후 copy하는 방법보다 visual 모드를 이용해서 범위설정후
... copy하는 방법엔 어떤 장점이 있을까요....

1)마우스의 상태에 따라 다르겠지만 visual 모드를 이용하면 마우스보다 정교하게 범위설정을 할 수
...있다는 사실입니다.제것도 마우스가 부드럽지 못하다 보니 정확한 범위를 지정하려고 하다보면 속
.. 뒤집어 질때가 많았죠....아마 동감하시는 분이 있으실 겁니다..-_-''

2)마우스를 이용한 copy는 화면에 보여지는 부분만 copy된다는 것입니다.
.. 그러나 visual 모드를 이용하면 그런 제약이 없다는 것이죠.

3)그리고 가장 중요한 차이점!! visual 모드를 이용하면 vi 고수같아 보인다는 것..:)

5. visual 모드로 진입하는 방법에는 3가지가 있습니다.

1) v : 일반 visual 입니다.-- VISUAL -- 이라고 표시됩니다.

2) Ctrl + v : 블럭 visual 입니다. -- VISUAL BLOCK -- 이라고 표시됩니다.

3) Shift + v : 라인 visual 입니다. -- VISUAL LINE -- 이라고 표시됩니다.

6. 다시 첫번째 라인 맨앞으로 이동후 Ctrl + v 를 이용해 블럭 visual 로 진입후 j를 눌러 5번째 라인까지
.. 내려간후 l을 눌러 1~5번째 라인까지 첫번째 linuxvi 만을 범위 설정후 y를 눌러보세요.
.. 5 lines yanked 라는 문구가 화면 하단 좌측에 나타날것 입니다.커서를 라인 맨 마지막으로 이동시킨후 o 를
.. 눌러 라인아래 입력모드로 만든후 엔터키를 두세번 누른후 명령모드로 다시 바꾸고 p를 눌러보세요.
.. 자 이게 바로 visual 모드의 하이라이트입니다.이것을 잘 이용하면 특정범위를 지정해서 특정부위에
.. 정확하게 넣을 수 있죠... 또한 맨앞 라인을 모두 대문자로 바꾸고 싶을때 visual block을 이용해 라인들
.. 맨앞자만 범위를 지정후 Shift + u를 눌러보세요..어떠세요.vi 쓸만하죠..:) 소문자는 범위지정후 u 라고만
.. 함 됩니다.지정된 범위의 삭제는 d 입니다.지정된 범위의 한줄로의붙히기는 shift + j 입니다.

7.저장하고 종료합니다.

##powerup 9단계에서 여러분이 알게된 명령어##

명령모드( ESC ) j 아래로 이동
k 위로 이동
h 좌로 이동
l 우로 이동
w 한단어씩 정방향으로 이동
b 한단어씩 역방향으로 이동
J 라인 붙히기
0(아라비아 숫자) 라인 맨앞으로 이동
$ 라인 맨끝으로 이동
1G 파일의 첫라인으로 이동
$G 파일의 끝라인으로 이동
pageup키 한화면 위로 이동
pagedown키 한화면 아래로 이동
Ctrl + b 한화면 위로 이동
Ctrl + f 한화면 아래로 이동
H 현재화면 첫라인으로 이동
M 현재화면 중간라인으로 이동
L 현재화면 마지막라인으로 이동
입력모드( o ) 현재라인 아래 입력모드
입력모드( O ) 현재라인 위 입력모드
입력모드( a ) 커서뒤 입력모드
입력모드( I ) 현재라인 맨앞 입력모드
입력모드( A ) 현재라인 맨뒤 입력모드
ex모드( Shift + : ) w 새로운 이름으로 파일저장하기
n(원하는 아라비아 숫자) 이동하고자 하는 라인위치로 이동
visual( v )

visual line( Shift + v )

visual block( Ctrl + v )


y 복사
p 붙혀넣기
d 삭제
U 대문자로
u 소문자로
J 한줄의 라인으로 붙히기








[vi PowerUP 10단계]

1. 명령행에서 vi linux-windows.txt 파일을 다시 여세요,

2. ex모드로 전환하세요.그리고 :%s/linuxvi/vimpire/g 라고 명령해 보세요

3. 이번엔 : ! ls 라고 해보시고, : ! vi /etc/httpd/conf/httpd.conf 라고 해보세요.
... 빠져나올때는 : q 입니다.대충 감이 잡히시죠...:)

4. 마지막으로 : h 라고 해보세요.자 이제 여러분이 유심히 봐주셔야 할 내용이 나왔습니다.
.. 지금까지 여러분은 많은 vi에 대한 사용법을 배웠다고 생각하실것입니다.
.. 하지만 저도 아는것은 여러분게 설명드린 이게 전부고 아직도 vi의 기능은 여러분 앞에 보이는
.. 내용만큼 많이 남아 있습니다.이제부터는 여러분의 몫입니다.그리고 여러분의 도움이 필요합니다.
.. 많은 작업상황과 실전에 많이 적용시켜보시고 유용한 vi의 기능들을 조금씩 모아 좀더 많은 리눅스
.. 사용자들이 좀더 빠른 시간안에 프로그램을 코딩하고 효과적인 작업을 함으로써 좀더 유용한
.. 리눅스용 프로그램들을 좀더 빨리 만들고 리눅스를 효율적으로 운영함으로써 우리의 리눅스가
.. 더욱더 가치있는 OS로써 사용되고 발전하는데 여러분의 힘을 모아주세요...:)

5.도움말에서 빠져 나올땐 : q 입니다.

6.영원히 저장하고 종료합니다.이제 준비는 끝났습니다.
.. 이제 vi 고수를 위한 실전 연습만이 남았습니다.
.. 자 이제 실전으로 돌아가서 vi의 내면에 숨겨진 기능들을 마음껏 발휘시켜 사용하시기 바랍니다.

##powerup 10단계에서 여러분이 알게된 명령어##

명령모드( ESC ) j 아래로 이동
k 위로 이동
h 좌로 이동
l 우로 이동
w 한단어씩 정방향으로 이동
b 한단어씩 역방향으로 이동
J 라인 붙히기
0(아라비아 숫자) 라인 맨앞으로 이동
$ 라인 맨끝으로 이동
1G 파일의 첫라인으로 이동
$G 파일의 끝라인으로 이동
pageup키 한화면 위로 이동
pagedown키 한화면 아래로 이동
Ctrl + b 한화면 위로 이동
Ctrl + f 한화면 아래로 이동
H 현재화면 첫라인으로 이동
M 현재화면 중간라인으로 이동
L 현재화면 마지막라인으로 이동
입력모드( o ) 현재라인 아래 입력모드
입력모드( O ) 현재라인 위 입력모드
입력모드( a ) 커서뒤 입력모드
입력모드( I ) 현재라인 맨앞 입력모드
입력모드( A ) 현재라인 맨뒤 입력모드
ex모드( Shift + : ) w 새로운 이름으로 파일저장하기
n(원하는 아라비아 숫자) 이동하고자 하는 라인위치로 이동
%s/a/b/g 파일 전체에서 a 를 b 로 바꿈
! 외부 명령사용(종료는 q)
h 도움말(종료는 q)
visual( v )

visual line( Shift + v )

visual block( Ctrl + v )


y 복사
p 붙혀넣기
d 삭제
U 대문자로
u 소문자로
J 한줄의 라인으로 붙히기






이제 여러분은 vi의 기본적인 메뉴 그룹을 알게되었습니다.
그리고 지금까지 알게된 명령어만으로도 vi를 충분히 활용하고도 남습니다.
하지만 좀더 다양한 명령들이 추가로 더 있습니다.추가로 더 알아서 혼동되실것 같으면
어느정도 vi 명령이 익숙해지신후에 보셔도 무관합니다.하지만 알게되면 언젠가 사용하실
경우가 있을것입니다.시간있으실때 하나하나 연습해보세요.:)



##추가 명령어##

이동 e 단어의 마지막 글자로
E 단어의 마지막 글자로(띄워쓰기 전까지)
^ 커서위치 라인의 첫 글자로(라인 처음위치))
$ 커서위치 라인의 마지막 글자로(라인 끝위치)
enter 커서위치 다음 라인 첫 글자로
+ 커서위치 위 라인 첫 글자로
- 커서위치 아래 라인 첫 글자로
( 이전 문장 첫 글자로
) 다음 문장 첫 글자로
{ 이전 문단으로
} 다음 문단으로
수정 r 커서 위치의 한글자 교체
R 커서 위치부터 를 누를때까지 다른 글자로 교체
s,cl 커서 위치의 글자를 한개를 여러 글자로 교체
ch 커서 바로 앞의 글자를 한개를 여러글자로 교체
cw 커서위치의 한단어를 교체
c0 커서 위치부터 줄의 처음까지 교체
C,c$ 커서 위치부터 줄의 끝까지 교체
cc 커서가 있는 줄을 교체
cj 커서가 있는 줄과 그 다음 줄을 교체
ck 커서가 있는 줄과 그 앞줄을 교체
삭제 x,dl 커서 위치의 글자 삭제
X,dh 커서 바로 앞의 글자 삭제
dw 한 단어를 삭제
d0 커서 위치부터 줄의 처음까지 삭제
D,d$ 커서 위치부터 줄의 끝까지 삭제
dd 커서가 있는 줄을 삭제
dj 커서가 있는 줄과 그 다음 줄을 삭제
dk 커서가 있는줄과 그 앞줄을 삭제
복사 & 붙히기 yw 커서 위치부터 단어끝까지 복사
y0 커서 위치부터 줄의 처음까지 복사
y$ 커서 위치부터 줄의 끝까지 복사
yy 커서가 있는 줄을 복사
yj 커서가 있는 줄과 그 다음줄을 복사
yk 커서가 있는 줄과 그 앞줄을 복사
p 커서의 다음 위치에 붙혀넣기
P 커서가 있는 위치에 붙혀넣기
기타 . 조금전에 했던 명령을 반복(하나만)
~ 대문자는 소문자로,,소문자는 대문자로....
Ctrl + l 현재 화면을 지우고 다시그림...








이제 vi의 하이라이트 mapping에 대해 배워보는 공간입니다.
지금까지 익혀온 명령들과 앞으로 실전에 활용하면서 배우게될 많은 명령어들과 사용법을 앞으로
해볼 mapping과 잘 접목시키면 효율적인 작업에 많은 도움이 될것입니다..



[vi 11단계]-mapping(1)!!!

1. 명령행에서 vi map.txt 해서 파일을 엽니다.

2. 첫번째 라인에 windows notepad라고 입력합니다.

(참고로 vi에서 key는 도움말로 mapping 되어 있으니,를 사용하겠습니다. )

3. ex모드로 전환후 :map :%s/windows/linux/g 까지만 입력후 enter를 치세요.

4. (자 먼저 위의 명령입력은 ex모드에서 map이라는 명령을 입력하고, 한칸띄우고 funtionkey F1을
.. 누르면 이라고 입력됩니다.그리고 다시 한칸띄우고 :%s/windows/linux/g라고 입력하면 됩니다.)

5. 자 이제 명령모드 상태니까 key를 눌러보세요.

6. 좌측하단 입력모드에 아까 입력한 명령이 나옵니다.이제 enter만 치면 명령이 실행됩니다.

7. 자..근데..key누르고 명령확인후 enter치기 구찮죠..자이제 이것을 한번에 해보면..

8.이번엔 에 mapping 해서 역으로 linux를 windows로 바꿔보죠.

9. ex모드로 전환후 :map :%s/linux/windows/g 까지만 입력후 ctrl + v 를 눌러보세요.

( ctrl + v가 명령모드에선 -VISUAL BLOCK-이지만 ex모드에선 funtion key 입력기능을 합니다.)

10. :map :%s/linux/windows/g^ 이렇게 되죠...이제 enter를 눌러보세요.

11. :map :%s/linux/windows/g^M 이렇게 되죠...이제 enter를 쳐서 명령을 입력시키고,

12. 명령모드 상태에서 를 눌러보세요.바로 바뀌죠.

13. 이제 다시 key를 눌러보세요. 명령확인후 enter를 쳐야만 바뀌죠.

14. 자이제 어느정도 mapping 활용용도가 머리에 막 떠오르세요?..^^

15. 참고로 여기선 mapping 할 문자로 등..funtionkey를 사용했는데..
... 이것만 쓸수 있는것이 아니고 vi에서 사용하는 명령과 중복되지 않으면 어떤문자라도 쓸수
... 있습니다.예를 들어 @,&,qq,등등..자신이 얼마든지 만들어 쓸수 있습니다.

##11단계에서 여러분이 알게된 명령어##

ex모드( Shift + : ) map + 원하는 mapping 문자 매크로만듬.
ctrl + v funtion key 입력








[vi 12단계]-mapping(2)!!!

1. 11단계에서 사용한 파일을 그대로 이용합니다.

2. 모든 라인을 지우고 첫번째라인에 notepad 두번째라인에 kldp라고 입력합니다.

(현재가 mapping이 되어있으니...)

3. ex모드로 전환후 :map :%s/notepad/vi/g^M까지만 입력후 enter를 치세요.

4. 다시 ex모드로 전환후 :map :%s/kldp/mapping/g^M까지만 입력후 enter를 치세요.

5. 다시 ex모드로 전환후 :map ^M까지만 입력후 enter를 치세요.

6. 를 차례로 한번씩 눌러보고 u 키를 이용해 다시 2번 상태로 만든후,

7. ex모드로 전환후 :map owow!!^M라고 mapping 시킵니다.

8. 한번 눌러보세요.

9. owow!!의 의미는 첫번째 단어 o는 입력모드(아래라인에 입력명령) wow!!는 입력문자.

10. u 키를 이용해 다시 2번 상태로 만든후,

11. ex모드로 전환후 :map owow!!^[:w mapping.txt^M라고 mapping 시킵니다.

12. 명령모드 상태에서 를 다시 눌러보세요.

13. ^[ 이것은 ex모드에서 ctrl + v 하고서 esc를 누르면 됩니다.
... 즉, ^[은 ESC(명령모드)를 의미합니다.
... 따라서 owow!!^[:w mapping.txt의 의미는 입력모드로가서 wow!!를 입력하고 다시 명령모드로
... 전환후 ex모드를 실행시켜 mapping.txt라는 새로운 파일로 저장한다라는 의미입니다.

14. 이제 :wq명령으로 저장후 빠져나온후
.... 다시 vi map.txt를 열어서 를 눌러보세요.

15. 명령이 안먹죠..vi 실행시 마다 사용하려면.vimrc파일에 저장후 사용하시면 됩니다.

16. mapping을 편집상태에서도 사용하고 싶다면 mapping시 map 뒤에 !를 붙히면 됩니다.

##12단계에서 여러분이 알게된 명령어##

ex모드( Shift + : ) map + 원하는 mapping 문자 매크로만듬.
ctrl + v funtion key 입력
map! + 원하는 mapping 문자 편집모드에서도 실행가능 매크로








[vi 13단계]-marking!!!

1. vi mark.txt를 하나 만들어 시작합니다.

2. 라인맨 앞줄마다 라인번호를 입력합니다.30줄이상으로 만드세요.

3. 10번라인으로 이동후 명령모드 상태서 ma 즉,m 과 a를 순서대로 누릅니다.

4. 20번라인으로 이동후 명령모드 상태서 mb 즉,m 과 b를 순서대로 누릅니다.

5. 30번라인으로 이동후 명령모드 상태서 mc 즉,m 과 c를 순서대로 누릅니다.

6. ` 을 누른후 a를 눌러보세요.

7. ` 을 누른후 b를 눌러보세요.

8. ` 을 누른후 c를 눌러보세요.

9. 이렇게 marking을 코딩시 table의 시작이나 끝,또는 구분하여야 할 영역이나
...참조해야할 부분에 시켜놓고 사용하면 됩니다.

##13단계에서 여러분이 알게된 명령어##

ex모드(Shift + :) map + 원하는 mapping 문자 매크로만듬.
ctrl + v funtion key 입력
map! + 원하는 mapping 문자 편집모드에서도 실행가능 매크로
명령모드(ESC) m + 원하는 marking 문자 marking

2009. 3. 30.

[리눅스] 특정 파일을 제외한 압축 방법

리눅스 특정 파일을 제외하고 압축 하는 방법

◆ 특정 파일 제외한 압축
형식 : tar -cvf 압축파일명.tar --exclude="제외할파일명" 압축대상

# tar -cvf FILE_NAME.tar --exclude="*.tar" ./*

위와 같이 실행하여 현재 폴더의 *.tar 파일을 제외한 모든 파일을 FILE_NAME.tar 으로

압축하라 라는 뜻이다.

◆ 다수 파일 제외한 압축
만일 다수의 파일을 제외하려면 텍스트 파일에 리스트를 넣고 --exclude 옵션에 `리스트.txt` 으로

하면 된다.

[리눅스] 트래픽 체크

트래픽 체크 하기


[root@localhost /]# vi trapic.sh

------------------------------------------------
#!/bin/sh

if [ "$1" != "" ]; then
# ethnet device
ETH="$1:"
CHECK=/proc/net/dev
CAT=/bin/cat

GREP="/bin/grep ${ETH}"
SED="sed -e s/${ETH}//"
UPTIME=/usr/bin/uptime

# parcket user check
set `${CAT} ${CHECK} | ${GREP} | ${SED}`

# Transmit packet
let "in1 = $1"
let "out1 = $9"

echo "측정중입니다. 기다려주세요"
sleep 1

set `${CAT} ${CHECK} | ${GREP} | ${SED}`

let "in0 = $1"
let "out0 = $9"

let " in = ($in0 - $in1)/(10*1024)"
let " out = ($out0 - $out1)/(10*1024)"
echo "수신(in) $in kbyte/s"
echo "송신(out) $out kbyte/s"


else
echo "USAGE: $0 [ethernet device no]"
echo "ex) ./$0 eth0"
fi

exit 0
------------------------------------------------

[root@localhost /]# ./trapic.sh
USAGE: ./trapic.sh [ethernet device no]
ex) ././trapic.sh eth0

[root@localhost /]# ./trapic.sh eth0
측정중입니다. 기다려주세요
수신(in) 0 kbyte/s
송신(out) 0 kbyte/s


위와 같이 체크하면 된다.

[C언어] 명령어 실행

C언어에서 명령어 실행하기

# vi command.c

------------------------------
#include "stdlib.h" // Header File
int main()
{
system("입력할 명령어"); //Print
return 0;
}
------------------------------

# gcc -o command command.c

[리눅스] ShellProgram

1. Shell과 Shell programming이란?
2. 쉘 문법 - 변수, 연산
3. 쉘 문법 - 조건문,제어구조
4. 쉘 문법 - 목록
5. 쉘 문법 - 함수
6. 쉘 문법 - 명령어
7. 쉘 문법 - 명령실행
8. 쉘 문법 - 쉘 스크립트 내부에서 입력 전달
9. 쉘 문법 - 디버깅
10. 우리가 자주 쓰는 쉘 스크립트
11. 참고자료



1. Shell과 Shell programming이란?
쉘이란 간단히 생각해서 MS-DOS의 명령어 처리기인 command.com과 비슷하다고 할 수
있다. 그렇지만 그 기능은 MS의 것보다 엄청나다고 할 수 있다. 우리가 리눅스를 사용
하면서 쓰고 있는 것들의 대부분이 쉘 스크립으로 짜여있는 것만 봐도 알수 있다.
쉘은 사용자를 유닉스(리눅스) 시스템에 이어주는 인터페이스로써 쉘을 통해 명령어를
입력하면 쉘은 해당 명령을 운영체제가 실행할 수 있도록 전달해주는 역활을 한다.
쉘의 종류는 다양하나 흔히 우리들이 쓰는 것은 bash와 tcsh이다.
+------------+-------------------------------------------------------------+
|셀 명칭 | 간단한 역사 |
+------------+-------------------------------------------------------------+
|sh(Bourne) | 최초의 쉘 |
+------------+-------------------------------------------------------------+
|csh,tcsh,zsh| C 쉘, Berkeley 유닉스 프레임의 Bill Joy가 만듦. |
+------------+-------------------------------------------------------------+
|ksh,pdksh | Korn 쉘, pdksh는 public domain Korn쉘. David Korn이 만듦 |
+------------+-------------------------------------------------------------+
|bash | GNU 프로젝트에서 나온 linux의 중요한 프로그램. Bourne Agine |
| | shell이라도 부른다. |
+------------+-------------------------------------------------------------+
|rc | csh보다 더 C에 가깝다. GNU 프로젝트의 결과물 |
+------------+-------------------------------------------------------------+

쉘 프로그래밍은 빠르고 간편하게 짤 수 있는 인터프리터 언어로써 컴파일할 필요가
없으며 한줄씩 실행시킬 수 있는 장점이 있지만 정밀한 처리나 빠른 처리를 요구하는
것엔 부적합하다고 할 수 있다. 쉘 프로그래밍 작성방법은 두가지로써 하나는 실행할
명령을 순서대로 입력하여 대화식으로 실행하는 것이며, 다른 하나는 실행할 명령을
파일에 저장한 다음 실행하는 것이다.


2. 쉘 문법 - 변수, 연산
변수는 환경변수와 인자변수, 일반변수로 구분되며 변수를 사용하기 위해서는 C와는
달리 처음 선언해주는 것이 아니라 변수를 처음 사용할때 생성한다. 변수는 기본적으
로 문자열로 저장이 되며 변수의 내용을 보려면 $를 앞에 붙인후 echo명령으로 호출하
게 된다.
(변수를 인용처리 하기위해서는 작은 따옴표(')로 $변수를 묶거나 $ 앞에 문자를 붙
임으로써 $의 특별한 의미를 없애버릴 수 있다. 또한 변수의 값에 공백이 포함되면
앞뒤로 따옴표로 묶어주어야 하며, 등호(=) 앞뒤에 공백을 넣지 말아야 한다)

1) 환경변수
쉘을 기동하면 기본적으로 세팅되는 변수들로써 일반적으로 사용자정의 변수와 구분
하기 위해서 대문자로 표현된다. 핵심적인 변수는 다음과 같다.
+----------+------------------------------------------------------------+
| 환경변수 | 설명 |
+----------+------------------------------------------------------------+
| $HOME | 사용자 홈 디렉토리 |
+----------+------------------------------------------------------------+
| $PATH | 명령어 찾기에 사용되는 콜론(:)으로 구분되는 디렉토리 목록 |
+----------+------------------------------------------------------------+
| $IFS | 입력필드 구분자. 쉘상에서 입력을 읽어들일 때 낱말을 구분 |
| | 하기 위한 목적으로 사용되는 문자 목록, 보통은 스페이스, 탭,|
| | 개행문자임 |
+----------+------------------------------------------------------------+
| $0 | 쉘 스크립트의 이름 |
+----------+------------------------------------------------------------+
| $# | 전달된 인자의 개수 |
+----------+------------------------------------------------------------+
| $$ | 쉘 스크립트의 프로세스 ID. 쉘 스크립트 내부에서 중복되지 |
| | 않는 파일의 이름을 만들 때 자주 사용됨 |
+----------+------------------------------------------------------------+

2) 인자변수
쉘 스크립트에 인자를 넘겨줄때 그 인자들에 대한 정보를 가지고 있는 변수들로써
전달되는 인자와 관련된 변수들은 다음과 같다
+----------+------------------------------------------------------------+
| 인자변수 | 설명 |
+----------+------------------------------------------------------------+
| $1, $2.. | 스크립트로 전달된 인자 |
+----------+------------------------------------------------------------+
| $* | 스크립트로 전달된 인자 전체로, 하나의 변수에 저장되며 IFS |
| | 환경 변수의 첫 번째 문자로 구분된다. |
+----------+------------------------------------------------------------+
| $@ | $*와 비슷하나 IFS 환경 변수를 사용하지 않는다 |
+----------+------------------------------------------------------------+

3) 일반변수
일반변수는 특별한 제약이 없으며 대소문자의 구분만 명확히 하면 된다.

예) #!/bin/sh
echo "This Script Executable File : $0"
echo "Argument Count : $#"
echo "Process ID : $$"
echo "Argument List $* : $*"
echo "Argument List $@ : $@"
echo "Argument 1 : $1"
echo "Argument 2 : $2"

-->실행
$chmod 755 argument (or chmod a+x argument)
$./test a1 a2


3. 쉘 문법 - 조건문,제어구조
1) test, []
쉘 스크립트에서 참거짓 값을 판단할 수 있는 것은 test와 []로 보통 같은 의미를
지닌다. []명령어는 쉘 스크립트를 다른 프로그래밍 언어와 비슷하게 보이는 역할
을 하기도 한다.

a. 문자열 비교
+--------------------+--------------------------------------------------+
| 문자열 비교 | 결과 |
+--------------------+--------------------------------------------------+
| string | string1이 빈 문자열이 아니면 참 |
+--------------------+--------------------------------------------------+
| string1 = string2 | 두 문자열이 같다면 참 |
+--------------------+--------------------------------------------------+
| string1 != string2 | 두 문자열이 같지 않다면 참 |
+--------------------+--------------------------------------------------+
| -n string | 문자열이 null이 아니라면 참 |
+--------------------+--------------------------------------------------+
| -z string | 문자열이 null이라면 참 |
+--------------------+--------------------------------------------------+

b. 산술 비교
+-----------------------------+-----------------------------------------+
| 산술비교 | 결과 |
+-----------------------------+-----------------------------------------+
| expression1 -eq expression2 | 두 표현식 값이 같다면 참 |
+-----------------------------+-----------------------------------------+
| expression1 -ne expression2 | 두 표현식 값이 같지 않다면 참 |
+-----------------------------+-----------------------------------------+
| expression1 -qt expression2 | expression1이 expression2보다 크다면 참 |
+-----------------------------+-----------------------------------------+
| expression1 -ge expression2 | expression1이 expression2보다 크거나 |
| | 같다면 참. |
+-----------------------------+-----------------------------------------+
| expression1 -lt expression2 | expression1이 expression2보다 작다면 참 |
+-----------------------------+-----------------------------------------+
| expression1 -le expression2 | expression1이 expression2보다 작거나 |
| | 같다면 참. |
+-----------------------------+-----------------------------------------+
| ! expression | expression이 거짓이라면 참, |
| | 참이라면 거짓 |
+-----------------------------+-----------------------------------------+

c. 파일 조건
+---------------+-------------------------------------------------------+
| 파일 조건 | 결과 |
+---------------+-------------------------------------------------------+
| -d file | file이 디렉토리라면 참 |
+---------------+-------------------------------------------------------+
| -e file | file이 존재한다면 참 |
+---------------+-------------------------------------------------------+
| -f file | file이 정규파일이라면 참 |
+---------------+-------------------------------------------------------+
| -g file | file상에 set-group-id가 설정되어 있다면 참 |
+---------------+-------------------------------------------------------+
| -r file | file이 읽기 가능하다면 참 |
+---------------+-------------------------------------------------------+
| -s file | file의 크기가 0이라면 참 |
+---------------+-------------------------------------------------------+
| -u file | file상에 set-user-id가 설정되어 있으면 참 |
+---------------+-------------------------------------------------------+
| -w file | file이 쓰기 가능하다면 참 |
+---------------+-------------------------------------------------------+
| -x file | file이 실행가능하다면 참 |
+---------------+-------------------------------------------------------+

2) if
명령의 결과를 테스트하여 조건적으로 적절한 구문의 그룹을 실행시킨다.

a. 형식1(단일 if문)
------------------------------------------------------------------------
if [조건]
then
문장
fi
------------------------------------------------------------------------

b. 형식2(if~else문)
------------------------------------------------------------------------
if [조건]
then
문장
else
문장
fi
------------------------------------------------------------------------

c. 형식3(여러가지 조건 검사)
------------------------------------------------------------------------
if [조건]
then
문장
elif [조건]
then
문장
else
문장
fi
------------------------------------------------------------------------

3) for
지정한 범위 안에서 루프를 돌리는데 사용된다. 범위에 사용되는 값은 어떠한
문자열의 집합이라도 가능하다. 루프가 돌때마다 값1, 값2가 차례로 들어간다.

----------------------------------------------------------------------------
for 변수 in 값1, 값2 ...
do
문장
done
----------------------------------------------------------------------------

4) while
어떤 명령을 지정한 횟수만큼 실행시키기에는 부적합한 for루프를 보완하는 것으로
실행 횟수가 불확실할때 편리하다.

----------------------------------------------------------------------------
while 조건문
do
문장
done
----------------------------------------------------------------------------

5) until
while과 비슷하나 조건이 참일동안 실행되는 것이 아니라 거짓일 동안 실행된다.

----------------------------------------------------------------------------
until 조건문
do
문장
done
----------------------------------------------------------------------------

6) select
원하는 리스트를 출력하고 그중 선택된 것을 돌려준다. 주의할 점은 select의 루프
내에서 자동적으로 벗어날 수 없으므로 반드시 break문을 사용해서 벗어나야 한다.

예) #!/bin/sh
echo "What do you like?"
select var in "Linux" "Windows9x" "Win2k" "Win31" "Exit"
do
if [ "$var" = "Linux" ]; then
echo "You are a Linuxer!!!"
exit 0
elif [ "$var" = "Exit" ]; then
echo "The question ended"
exit 1
else
echo "$var is not the best way!!!"
echo "What do you like?"
fi
done

--> 결과 : What do you like?
1) Linux
2) Windows9x
3) Win2k
4) Win31
5) Exit
#?

7) case
여러 패턴을 검사하고 이에 적절한 구문을 실행시켜 주는 것으로 강력한 기능을
가지고 있으며 쉘스크립에 많이 등장한다.

---------------------------------------------------------------------------
case 변수 in
패턴 [ | 패턴 ] ...) 문장 ;;
패턴 [ | 패턴 ] ...) 문장 ;;
....
esac
---------------------------------------------------------------------------


4. 쉘 문법 - 목록
여러 명령어를 실행할때 앞의 명령의 결과에 의해서 다음 행동이 결정되어야 할 경우
AND나 OR조건을 사용해서 한번에 처리할 수 있다. 이것은 쉘 스크립트 뿐 아니라 명
령행에서도 사용 가능하다.

1) AND목록
한번에 여러 명령을 한꺼분에 실행시킬 수 있다. AND 목록에서 이전의 명령이 성공
했다면 다음번 명령을 수행한다. 왼쪽 구문부터 시작하여 그 결과값이 참이라면
그 다음 명령어가 수행된다. 거짓이 반환되면 더이상 명령어를 실행하지 않는다.

----------------------------------------------------------------------------
statment1 && statment2 && statment3 && ...
----------------------------------------------------------------------------

2) OR목록
어떤 하나의 명령의 수행이 성공할때까지 일련의 명령을 계속 수행한다. 명령의 수
행이 성공하면 더 이상 목록 중의 다른 명령은 수행하지 않는다. 왼쪽 구문부터
시작하여 그 결과값이 거짓이라면 오른편의 명령어가 수행된다. 참의 값이 반환되면
실행을 멈춘다.

----------------------------------------------------------------------------
statment1 || statement2 || statement3 || ...
----------------------------------------------------------------------------

3) AND와 OR의 혼용
아래와 같이 &&와 ||을 혼용하여 사용할수 있다. 참이면 문장1이 실행되고 거짓이
면 문장2가 실행된다
----------------------------------------------------------------------------
[ 조건 ] && 문장1 || 문장2
----------------------------------------------------------------------------

예) [ -f file_one ] && command for true || command for false


5. 쉘 문법 - 함수
쉘 스크립 내부에 또는 다른 스크립트 파일에 함수를 정의해 놓고 사용할 수 있다.
함수를 사용하면 코드를 최적화 할 수 있고 코딩이 간결해지며, 재사용이 가능하다.
그러나 다른 스크립트 파일을 호출해서 함수를 실행할 경우, 가능은 하지만 스크립트
의 실행시간이 길어지고 함수의 결과를 전달하는 것이 까다롭기 때문에 가급적이면
외부 파일의 함수를 사용하지 않는 것이 좋다.

-----------------------------------------------------------------------------
function_name () {
statments
}
-----------------------------------------------------------------------------

함수를 사용하는 방법은 함수명(function_name) 뒤에 인자를 적어준다. 그리고 함수
내부에서 지역(local)변수를 사용하고자 할 경우에는 변수명 앞에 local이란 예약어를
적어주면 된다.


6. 쉘 문법 - 명령어
쉘 스크립트 안에서 사용할 수 있는 명령은 두 종류로써 하나는 내부명령어이고 다른
하나는 프롬프트 상에서 실행시킬 수 있는 일반명령어이다. 내부명령이 외부명령보다
좀 더 효율적이라는 것을 제외하면 실질적인 차이는 없다.

1) break
for, while이나 until에서 제어 조건을 만나기 전에 루프를 벗어날 때 사용한다.
예) while true
do
if [ -f file_name ]; then
break
fi

echo "file_name was not found"
done
exit 0

2) : 명령
의미없는(null) 명령으로 true를 대신해 논리값을 간단하게 하기 위해서 사용한다.
while true와 같은 것을 while :와 같이 대체할 수 있으며, 변수의 조건을 지정할
수 있다. 예) : $(var=value)

3) continue
C에서와 비슷하며 for, while 또는 until 루프의 변수를 다음 값을 가지게 하고
다음 번 루프를 돌게 한다.

4) .명령
현재의 쉘에서 명령을 실행시킨다.

5) echo
개행문자를 포함한 문장을 간단하게 출력한다. (다음줄로 넘어간다)

6) eval
인자의 실제 값을 구하는데 사용한다.
예) foo=10
x=foo
y='$'$x
echo $y ==> 결과값 : $foo

foo=10
x=foo
eval y='$'$x
echo $y ==> 결과값 : 10

7) exec
현재 쉘을 다른 프로그램으로 대체하거나 파일을 읽기 모드로 열때 사용한다.

8) exit n
현재 쉘을 종료한다. 종료시 n값을 리턴한다.
+----------+--------------------------------+
| 종료코드 | 설명 |
+----------+--------------------------------+
| 0 | 성공 |
+----------+--------------------------------+
| 1~125 | 스크립트에서 사용하는 에러코드 |
+----------+--------------------------------+
| 126 | 파일이 실행되지 않았다 |
+----------+--------------------------------+
| 127 | 해당 명령을 발견할 수 없다 |
+----------+--------------------------------+
| 128이상 | 시그널이 발생했다. |
+----------+--------------------------------+

9) export
해당 쉘에서 파생된 자식 프로세스에서 export한 환경변수는 본래 쉘에서 관리한다

10) expr
표현식의 값을 구하는 것으로 x='expr $x+1'과 같이 사용된다. 하지만 expr보다는
$((계산식))을 사용한다.

11) printf
C에서의 printf와 흡사하다.
형식 : printf "Format String" arg1 arg2 arg3 ...

+-------------+----------------------------------------+
| 탈출 문자열 | 설명 |
+-------------+----------------------------------------+
| | 백슬래시() 문자 |
+-------------+----------------------------------------+
| a | 경고음(벨 또는 비프음) |
+-------------+----------------------------------------+
| b | 백스페이스 문자 |
+-------------+----------------------------------------+
| f | 폼피드 문자 |
+-------------+----------------------------------------+
| n | 뉴라인(newline) 문자 |
+-------------+----------------------------------------+
| r | 캐리지 리턴 문자 |
+-------------+----------------------------------------+
| t | 탭 문자 |
+-------------+----------------------------------------+
| v | 수직 탭 문자 |
+-------------+----------------------------------------+
| ooo | 8진수로 표현되는 한 문자 |
+-------------+----------------------------------------+

+-------------+----------------------------------------+
| 변환 식별자 | 설명 |
+-------------+----------------------------------------+
| d | 십진수 출력 |
+-------------+----------------------------------------+
| c | 한 문자 출력 |
+-------------+----------------------------------------+
| s | 문장 출력 |
+-------------+----------------------------------------+
| % | %문자 출력 |
+-------------+----------------------------------------+

예) [lpay09@pay lpay09]$ printf "%sn" hello

12) return
쉘 함수에서 값을 반환할때 쓰인다.

13) set
쉘 내부에서 매개 인자를 설정한다. set의 인자로 쓰인 문자열은 공백에 의해 $1
부터 차례대로 대입된다.
예) #!/bin/sh
echo the eate is $(date)
set $(date)
echo The month is $2

exit 0

--->결과 : the date is 일 2월 11 02:21:57 KST 2001
The month is 2월

14) shift
쉘의 인자를 한자리씩 아래로(n->1로) 이동시킨다.
예) #!/bin/sh
echo $1
shift
echo $1
shift 5
echo $1

실행 : [lpay09@pay lpay09]$ ./shift 1 2 3 4 5 6 7 8 9 10
1
2
7


15) trap
쉘의 실행도중 시그널을 처리하는 시그널 처리기를 만드는 역할을 한다.

-----------------------------------------------------------------------------
trap command signal
-----------------------------------------------------------------------------

쉘 스크립트는 위에서 아래로 실행되므로 보호하려는 부분 이전에 trap명령을 사용
한다. trap조건을 기본으로 사용하려면 명령에 - 를 넣으면 된다. 신호를 무시할려
면 ''빈 문자열을 준다.

예) trap 'rm -rf /tmp/my_tmp_file_$$' INT
(INT는 보통 Ctrl+C를 눌렀을때 발생된다)

16) unset
변수나 함수를 제거한다.

예) #!/bin/sh
foo="Hello world"
echo $foo
unset foo
echo $foo


7. 쉘 문법 - 명령실행
1) 외부 명령의 실행 결과를 변수에 집어넣어 변수의 값으로 사용하려면 $(command)
구문을 이용하면 된다. 또는 `command`의 형식도 유효하다.

----------------------------------------------------------------------------
변수=$(command)
-----------------------------------------------------------------------------

예) user=$(who)

2) 산술 확장
쉘에 있어서 변수는 모두 문자열로 저장이 되기 때문에 연산을 할려면 다음과 같은
약간 복잡한 거쳐야 된다.

----------------------------------------------------------------------------
변수 = $((산술식))
----------------------------------------------------------------------------

산술식내에는 변수($1,$와 같은)도 들어갈 수 있으며 숫자가 아닌 문자열, 또는
문자열이 담겨있는 변수가 들어가면 그것들은 계산에서 제외된다.
(0으로 간주되어 연산이 이루어지지 않는다)

예) count=$(($count+1))

3) 매개변수 확장
매개변수 확장이란 변수의 값을 문자열 등으로 대체하는 것으로 단순만 대체뿐만
아니라 변수 내의 문자열을 조작하여 원하는 문자열만 추출할 수도 있다.

+------------------+--------------------------------------------------------+
| 매개변수 확장 | 설명 |
+------------------+--------------------------------------------------------+
| ${param -default}| param이 존재하지 않으면 default로 대체 |
+------------------+--------------------------------------------------------+
| ${#param} | param의 길이를 참조한다(가져온다) |
+------------------+--------------------------------------------------------+
| ${param%word} | 끝에서부터 word와 일치하는 parm의 최소부분(첫번째 일치)|
| | 을 제거하고 나머지를 반환한다. |
+------------------+--------------------------------------------------------+
| ${param%%word} | 끝에서부터 word와 일치하는 parm의 최대부분(마지막 일치)|
| | 을 제거하고 나머지를 반환한다. |
+------------------+--------------------------------------------------------+
| ${param#word} | 처음부터 word와 일치하는 parm의 최소부분(첫번째 일치) |
| | 을 제거하고 나머지를 반환한다. |
+------------------+--------------------------------------------------------+
| ${param##word} | 처음부터 word와 일치하는 parm의 최대부분(마지막 일치)을|
| | 제거하고 나머지를 반환한다. |
+------------------+--------------------------------------------------------+

예) #!/bin/sh
unset foo
echo ${foo:-bar}
foo=fud
echo ${foo:-bar}
foo=/usr/bin/X11/startx
echo ${foo#*/}
echo ${foo##*/}
foo=/usr/local/etc/local/networks
echo ${foo%local*}
echo ${foo%%local*}

exit 0

--> 결과 : bar
fud
usr/bin/X11/startx
startx
/usr/local/etc
/usr


8. 쉘 문법 - 쉘 스크립트 내부에서 입력 전달 (Here Documents)
쉘 내부에서 명령어에 입력을 전달하는 방법으로 전달된 입력은 마치 키보드에서 입력
한 것과 같이 행동한다.

-------------------------------------------------------------------------------
명령 << 종료문자열
입력값
종료문자열
-------------------------------------------------------------------------------

예) #!/bin/sh
cat << !funy!
Are funy?
I'm a boy.
!funy!

다른 방법으로는 ed에디터와 조합으로 파일을 수정할 수 있다.
예) #!/bin/sh
ed text << !funy!
%s/boy/girl
w
q
!funy!

text파일의 내용 : I'm a boy ---> 실행후 I'm a girl


9. 쉘 문법 - 디버깅
쉘 스크립틀르 디버깅하는 것은 매우 쉽지만 도움이 될만한 특별한 도구가 없다.
따라서 echo문을 사용하여 변수의 내용을 살펴보거나, 문제가 있는 부분을 수동으로
쉘에서 상호 대화식으로 입력하는 테스트를 할 수 있다.
쉘의 명령행 옵션을 사용하거나 set명령을 사용하여 에러를 추적할 수 있다.
+----------------+----------------+--------------------------------------------+
| 명령행 옵션 | set 옵션 | 설명 |
+----------------+----------------+--------------------------------------------+
| sh -n script | set -o noexec | 구문 에러만 체크한다. |
| | set -n | 명령을 실행시키지 않는다 |
+----------------+----------------+--------------------------------------------+
| sh -v script | set -o verbose | 명령을 실행하기 전에 명령을 에코한다. |
| | set -v | |
+----------------+----------------+--------------------------------------------+
| sh -x script | set -o xtrace | 명령행에서 명령을 처리한 다음 에코한다. |
| | set -x | |
| | set -o nounset | 정의되지 않은 변수를 사용했을 때 에러를 |
| | set -u | 출력한다. |
+--------------+----------------+--------------------------------------------+
(set의 옵션 플래그를 켤때는 -o를, 끌때는 +o를 사용한다.)

쉘에서 아래와 비슷한 내용을 스크립트의 처음에 놓으면 어디에서 EXIT 시그널이 발생
해서 종료했는지 확인할 수 있다.
-------------------------------------------------------------------------------
trap 'echo Exiting: critical variable = $critical variable' EXIT
-------------------------------------------------------------------------------


10. 우리가 자주 쓰는 쉘 스크립트 (httpd)

1 : #!/bin/sh
2 : #
3 : # Startup script for the Apache Web Server
4 : #
5 : # chkconfig: 345 85 15
6 : # description: Apache is a World Wide Web server. It is used to server
7 : # HTML file and CGI
8 : # processname: httpd
9 : # pidfile: /var/run/httpd.pid
10 : # config: /etc/httpd/conf/httpd.conf
11 :
12 : # Source function library.
13 : . /etc/rc.d/init.d/functions
14 :
15 : # See how we were called
16 : case "$1" in
17 : start)
18 : echo -n "Starting httpd : "
19 : daemon httpd
20 : echo
21 : touch /var/lock/subsys/httpd
22 : ;;
23 : stop)
24 : echo -n "Shutting down http : "
25 : killproc httpd
26 : echo
27 : rm -f /var/lock/subsys/httpd
28 : rm -f /var/run/httpd.pid
29 : ;;
30 : status)
31 : status httpd
32 : ;;
33 : restart)
34 : $0 stop
35 : $0 start
36 : ;;
37 : reload)
38 : echo -n "Reloading httpd : "
39 : killproc httpd -HUP
40 : echo
41 : ;;
42 : *)
43 : echo "Usage : $0 {start|stop|restart|reload|status}"
44 : exit 1
45 : esac
46 :
47 : exit 0

[리눅스] VI 에디터 120% 사용

1. 한 파일의 일부분을 다른 파일로 복사하기


명령 설명

----------------------------------------------------------------

"f4yy 현재라인부터 4라인을 'f'라는 이름의 버퍼에 복사한다.

:w 편집중인 파일을 저장한다.

:e newfile 새로운 파일을 로드한다.

"fp 새로운 파일의 현재 라인위치에 'f'란는 이름으로 저장해

두었던 내용을 복사한다.

----------------------------------------------------------------



2. VI가 기억하는 두가지 파일명(%, #)


vi에디터에서 파일 편집을 할때 사용하는 두가지 ex 명령이 있다.

다음의 예를 보자..


:e file1 file2


위의 명령을 실행하면 file1을 편집하고 있는 상태가 되게 된다.

이 상태에서 :n 을 입력하면 file2를 편집하게 된다. 이때 다음을 입력해보자


:e#


이 명령을 입력하면 VI는 다시 file1을 편집하게 되고 이때 다시 :e#를

입력하면 file2를 편집하게 된다. 만약 이때 또 다시 :e#를 입력하게 되면

file1을 편집하게 된다. 즉 #의 뜻은 '선택적인 다른 하나의 파일'을

뜻하게 된다는 것이다.


또한 %의 뜻을 알아보자. %는 현재의 파일명을 뜻할 수 있다. 다음을 입력해

보자.


:w %.new


이 명령을 현재 편집중인 파일을 그 파일에 .new를 더한 이름으로 파일을

다시 저장하게 된다. 즉 위의 명령을 입력할때 편집중이던 파일명이 filename

이었다면 위의 명령으로 저장되는 파일은 filename.new 라는 파일이 된다.



3. 찾기 패턴과 글로벌 명령


* 찾기 패턴


명령 설명

-----------------------------------------------------------

:/pattern/d pattern을 포함한 다음 라인을 삭제

:/pattern/+d pattern을 포함한 라인의 그 다음 라인을 삭제

(+d 대신 +1을 사용할 수도 있다.)

:/pattern1/,/pattern2/d pattern1을 찾은 곳부터 pattern2가 있는

위치 까지를 삭제

:.,/pattern/m23 현재라인부터 pattern이 있는 곳까지를

23라인 다음으로 옮긴다.

-------------------------------------------------------------

위에서 주의할 점이 있다. 즉 VI명령과 EX명령에서 약간 다르게

작동되는 면이 있다는 것이다. 즉

d/while 과 :.,/while/d 가 틀리게 작동된다는 것이데 전자는 while이 있는곳

전 라인까지 삭제되고 후자는 while이 발생된 라인까지 삭제가 된다.


* 글로벌 명령


명령 설명

------------------------------------------------------------------

:g/pattern/ 파일에서 pattern이 찾아지는 마지막 위치로 이동

:g/pattern/p 파일에서 pattern을 찾아 화면에 print해준다.

:g!/pattern/nu 파일에서 pattern이 없는 라인을 찾아 라인 번호를

print해 준다. 이것을 이용해 pattern이 나타나는

횟수를 카운팅 할 수 있다.

:60,124g/pattern/p 60에서 124라인까지 pattern을 찾아 print해준다.

-------------------------------------------------------------------


또한 글로벌 명령은 다음과 같이 대치 명령과 같이 쓰일수 있다.


:g/^WARNING:/s/\/NOT/


위의 명령은 라인의 처음에 WARNING: 으로 시작하는 라인을 찾아서 그 라인에

하나의 단어(양쪽에 공백으로 존재하거나 양쪽에 TAB이나 newline등이 있는)로

존재하는 not이 있을 경우에 이것을 NOT으로 교체 하라는 명령이다.




4. 파일의 일부분만 저장


명령 설명

------------------------------------------------------------------

:230,$w newfile 230라인부터 끝까지 newfile로 저장

:.,600w newfile 현재라인부터 600라인까지 newfile로 저장

------------------------------------------------------------------




5. 패턴명령을 통해 블럭을 옮기기


:g/SYNTAX/,/DESCRIPTION/-1 mo /PARAMETERS/-1


위 명령은 SYNTAX가 처음 발견되는 위치부터 DESCRIPTION이 발견되는 위치의

바로 전라인까지를 PARAMETERS가 발견되는 바로 전라인으로 옮긴다는 뜻이다.



6. 위치 지정해 놓기.


명령 설명

------------------------------------------------------------------

mx 현재의 위치를 x라고 지정해 놓는다.

'x x로 지정한 위치의 라인으로 현재의 위치를 옮긴다.

`x x로 지정한 위치의 라인,열로 현재의 위치를 옮긴다.

`` 위치를 옮긴 후에 바로 전에 지정한 위치나 context의 정확한

위치로 돌아감

'' 바로 전에 지정한 위치나 context 라인의 시작으로 돌아감.

------------------------------------------------------------------




7. 텍스트를 유닉스 명령으로 필터링 하기


편집중인 내용을 유닉스 명령으로 필터링 할 수 있다. 예를 들어 1라인부터

10라인까지를 유닉스 명령인 sort를 통해 sort할 수도 있고 특정 블럭을

특정사람에게 메일로 보낼 수도 있다. 다음과 같은 형식으로 사용된다.


명령 설명

-------------------------------------------------------------------

:1,99!sort 1라인부터 99라인까지를 유닉스의 sort명령에게 보내

글 결과 값으로 대치한다.

!)command 전체라인을 command에게 보내 그 결과 값으로 대치한다.

!!command 현재라인을 command에게 보내고 그 결과 값으로 대치한다.

4!!command 현재라인부터 4라인을 command에게 보내 글 결과로 대치한다.

---------------------------------------------------------------------




8. 단축키 사용


명령 설명

--------------------------------------------------------------------

:ab abbr phrase abbr을 phrase에 대한 단축키로 사용

:unab abbr abbr에 대한 단축키 설정을 해제

--------------------------------------------------------------------


명령으로 단축키 사용


명령 설명

---------------------------------------------------------------------

:ab aW w! /tmp/fly.tmp.a

:ab aR r /tmp/fly.tmp.a

:ab bW w! /tmp/fly.temp.b

:ab bR r /tmp/fly.temp.b

---------------------------------------------------------------------


위 처럼 설정을 해 놓은 다음에


:.,+45 aW


이렇게 명령을 내리면

현재라인부터 45라인까지를 /tmp/fly.tmp.a 파일로 저장하게 되는 것이다.




9. 복사 삭제 및 라인모드, 문자 모드 명령


명령 설명

---------------------------------------------------------------------

yy 1라인 버퍼에 저장

"fyy 1라인을 버퍼 f에 저장

dd 1라인 삭제(삭제된 내용은 버퍼에 저장됨)

2dd 2라인 삭제(삭제된 내용은 버퍼에 저장)

d$ 현 위치부터 그 라인의 끝까지 삭제

이때 $의 위치에는 문자 모드의 명령들이 모두 쓰일수 있음

예를 들어, d^, dfa, dG 등등

ddp 현재라인을 삭제하고 삭제되어 버퍼에 저장된 내용을 현재라이의

다음 라인에 복사(즉, 현재라인과 다음라인을 바꿈)

D d$와 같은뜻

C c$와 같은뜻(현재위치부터 라인의 끝까지 수정)

Y yy와 같은뜻

d'a 현재라인부터 a로 지정해 놓은 위치의 라인까지 삭제

d`a 현재라인부터 a로 지정해 놓은 위치의 라인,컬럼까지 삭제

c/pattern/ 현재라인부터 pattern이 나오는 위치까지의 모든 문자를

수정(라인모드가 아님)

c?pattern? pattern을 포함


----------------------------------------------------------------------




10. 임시 영역이 꽉찰 경우 응급조치


임시영역이 넘쳐서 vi에디터가 제대로 작동하지 않는 경우가 있다.

이때는 임시영역의 위치를 바꾸어 주면 정삭적으로 편집작업을 할 수 있다.

set명령으로(쉘에서) directory변수의 위치를 바꾸어 이 일을 할 수 있다.


$ set directory=/usr/fly/vitemp


만약 위의 명령을 vi내에서 하길 원한다면 위의 명령을 vi에서 사용한 후에

:e command를 사용하면 편집중이 모든 파일의 임시디렉토리가 바뀌어질것이다.


또한 EXINIT환경변수의 값을 바꾸어 이 일을 할 수도 있다.


setenv EXINIT 'set directory=/usr/fly/vitemp'




11. map을 이용해 타이핑을 줄이자.


map명령은 명령 모드에서의 map명령과 입력 모드에서의 map명령의 두가지가

있다.


* 명령모드 map


명령 설명

--------------------------------------------------------------

map x sequence x를 sequence로 지정

unmap x x를 unmap

map 현재 map된 문자들을 보여준다.

--------------------------------------------------------------

위의 map명령을 .exrc파일에 넣어 두면 차후에 편하게 쓸 수가 있다.


위의 명령중에 x부분에 해당하는 키는 명령모드에서 사용되지 않는 것을

선택하여 정의 하여야 하며 이에 해당하는 것에는 다음과 같은 문자셋이

있다.


문 자: q K q V v

제어문자: ^A ^K ^O ^T ^W ^X

기 호: _ * \ =

(위에서 =는 VI가 lisp모드일 경우에 사용되므로 이때는 사용해서는

안된다.)


기본적인 사용예는 다음과 같이 사용될 수 있다.


map v dwwP


이와같이 정의해 두거나 ex모드(:상태)에서 위의 명령을 입력하면

'v'키를 입력함으로써 dwwP에 해당하는 명령이 실행된다. 즉 v키는

현재워드를 삭제(dw)하고 그 삭제된 워드를 현재 워드의 다음워드에

복사하게 된다.(즉 현재 워드와 다음워드의 자리바꿈)


또한 한 문자의 정의 뿐만 아니라 두글자 이상으로 map을 정의 할 수도

있다. 다음의 예를 보자.


map *s Ea'^[Bi'^[

map *d Ea"^[Bi"^[


위의 명령은 *s키를 입력하여 Ea'^[Bi'^[에 해당하는 명령을 실행하게 된다.

여기서 ^[가 의미하는 실제 여러분이 입력해야 할 키는 CTRL-V를 누른 다음

ESC키를 누른것을 의미한다.


또한 위의 명령을 설명하자면 다음과 같다.


Ea'^[Bi'^[ ==> 현재 단어의 앞 뒤로 '를 삽입하는 명령

Ea"^[Bi"^[ ==> 현재 단어의 앞 뒤로 "를 삽입하는 명령


또한 Function키를 등록 할 수도 있다. 예를 들어 F1키를 한 단어 삭제로

사용할 수도 있다.


map #1 dw ==> F1키를 한 단어를 삭제하는 키로 등록


* 입력모드 map


입력 모드에서의 map은 명령모드의 맵이 map명령으로 이루어 지는데 반해

map!이 사용된다는 차이가 있다.

입력 모드에서의 map은 다음과 같은 형식으로 사용될 수 있다.


:map! ^ ^[OCRAZYFLY:^[jA


위의 명령은 입력 모드에서 ^(caret)를 입력하면 ESC를 누른 다음 현재라인의

윗쪽에 한 라인을 삽입(O)하고 그 위치에 CRAZYFLY:라고 입력한 후에 ESC를

누르고 그 다음 라인으로 옮기고(j) 그 행의 맨 뒤에 입력을 계속 한다라는

의미이다.




12. 입력모드에서 방향키를 사용하자.


DOS사용자를 위해 명령모드와 입력 모드의 전환을 편리하게 하기 위해

입력 모드에서 방향키(up, down, left, right)를 누르면 그에 해당하는

행동을 하게 해주는 것을 map명령을 통해 할 수 있다.

물론 위의 키들이 다음의 코드를 나타낸 다는 것을 알아야 할 것이다.


키 코드 VI코드

---------------------------------------------------------

up ^[[A ^[ka

down ^[[B ^[ja

left ^[[D ^[hi

right ^[[C ^[la

---------------------------------------------------------


이를 map명령으로 나타내면 각각 다음과 같다.


-------------------------------------------------

map! ^[[A ^[ka

map! ^[[B ^[ja

map! ^[[D ^[hi

map! ^[[C ^[la

-------------------------------------------------

SMIT AIX आदमीं-Education

UNIT 1. SMIT 사용

* ODM(Object Data Manager)은 tool이 사용하는 명령어에 대한 정보와 option들과 어떻게 작용하는
가에 대한 정보를 담고있다.즉 하나의 data base라고 할 수 있다.

1.1 SMIT의 구성

▶ Menus
▶ Selector/Dialog Screen
▶ Pop-up lists
▶ Output Panel
▶ Contextual Help

1.2 SMIT 의 시작과 종료

# smit
AIXWindows환경에서는 Motif smit가, 아닌 경우 ASCII SMIT가 뜨게 된다.
AIXWindows 화면에서 ASCII SMIT를 띄울 때
# smit -C 또는 # smitty
또한 fastpath가 가능하다.
예 ) # smit tcpip

1.3 Dialog 화면에서의 기능 키 와 Special Symbol

F1 (or ESC+1) : Help
F2 (or ESC+2) : Refresh Special Symbol
F3 (or ESC+3) : Cancel * : 필수항목
F4 (or ESC+4) : List # : numerical value required
F5 (or ESC+5) : Reset / : pathname required
F6 (or ESC+6) : Command + : pop-up List available
F7 (or ESC+7) : Edit
F8 (or ESC+8) : Image
F9 (or ESC+9) : Shell
F10 (or ESC+0) : Exit
ENTER : 실행
/text : 찾기
n : 다음 문자열 찾기

1.4 smit.log 와 smit.script

SMIT는 SMIT를 실행하는 user의 홈디렉토리에 두 개의 파일을 생성한다.
smit.log는 방문했던 SMIT screen, AIX 명령 그리고 결과에 대한 기록을 가지고
smit.script는 SMIT에 의해서 실행된 AIX 명령을 포함한다.
smit 이외에도 AIX는 다른 VENDOR의 PRODUCT도 SUPPORT할 수 있는 DSMIT, 그래픽
환경의
management tool인 VSM(Visual Grahphic Management)를 지원한다.


1.5 Menus

System Management
Move cursor to desired item and press Enter.
Software Installation and Maintenance
Software License Management
Devices
System Storage Management (Physical & Logical Storage)
Security & Users
Communications Applications and Services
Print Spooling
Problem Determination
Performance & Resource Scheduling
System Environments
Processes & Subsystems
Remote Customer Support and Services
Applications
AIX System Backup & Recovery/6000
Using SMIT (information only)

F1=Help F2=Refresh F3=Cancel Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

1.6 Selector/Dialog Screen

Add a User
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
* User NAME []
User ID [] #
ADMINISTRATIVE USER? False +
Primary GROUP [] +
Group SET [] +
ADMINISTRATIVE GROUPS [] +
ROLES [] +
Another user can SU TO USER? true +
SU GROUPS [ALL] +
HOME directory []
Initial PROGRAM []

1.7 Pop-up lists
Primary GROUP
Move cursor to desired item and press Enter.
[TOP]
system
staff
bin
sys
adm
uucp
mail
security
cron
printq
1.8 Output Panel
COMMAND STATUS
Command: OK stdout: no stderr: no
Before command completion, additional instructions may appear below.
1.9 Contextual Help
CONTEXTUAL HELP
Press Enter or Cancel to return to the application.
Defines a unique decimal integer string to associate with this user
account on the system.
It is strongly recommended to let the system generate the user's ID
to incorporate all the security restrictions and conventions that may
apply to your system. To have the system generate the ID, leave this
field blank.

UNIT 2. System 시동과 정지

2.1 시동개요

시스템의 시동은 기계에 전원을 넣고, 하드웨어를 검사하고, 운용 시스템을 적재, 실행하고 기
계의 장치를 구성하는 행위를 의미한다. 시스템을 시동하려면 다음 자원이 필요하다.
▶ 기계에 전원이 들어오거나 재설정후 적재할수 있는 시동이미지(boot image)
▶ /(root)와 /usr 파일 시스템의 접근

독립 워크스테이션의 시동 이미지는 국지 디스크(주로 하드디스크)에서 발견되며, AIX 운용시
스템이 설치 될 때 생성된다. 시동 프로세서가 수행되는 동안, 시스템은 기계의 모든 장치를
구성하고 시스템 동작시 필요한 기본적 소프트웨어를 초기 설정한다.이 프로세스의 끝에서
AIX 파일트리가 사용 가능하며 사용되기 위해 준비되어 진다. 일반적으로 이러한 파일 시스템
은 원격으로도 적재할 수 있는 사용자 생성의 다른 파일 시스템과 함께 국지 디스크에 존재한
다.이와 같은 요청이 AIX 디스크없는 이용자에게도 똑같이 적용되며 이용자 또한 시동이미지
를 요구하고 AIX파일 트리에 접근한다. 이들은 국지적 파일 시스템이 없기 때문에 독립 시스
템과 구별되며, 모든 정보를 원격 접근 방법을 사용하여 얻는다.
AIX는 시스템 시동의 3가지 타입을 갖는다.
▶ 정상시동 : 독립기계가 정상운용으로 시작되는 프로세스
▶ 독립시동 : 특별한 업무를 위해 보수유지디스켓,OS 등으로 시작한 프로세스
▶ 네트워크 시동 : 디스크없는, 자료없는 워크스테이션이 네트웍을 통해 시작된
프로세스
RS/6000은 크게 Classical RISC System 6000과 PCI RISC System 6000으로 나눌수 있는데
이것은 Device Architecture인 MCA와 PCI의 차이이다.
Classical RISC System 6000은 keylock을 가지고 있다. 그것은 Normal, Secure, Service인데
이 key position은 시스템을 시동할 때 영향을 준다.
Normal : 시스템이 하드디스크 로부터 부팅한다.
Secure : 시스템이 부팅하지 않는다. LED가 200을 가르킨다.
Service: 시스템이 tape, CD-ROM, hard disk, diskette등 으로 부팅하려한다.
PCI RISC System 6000은 keylock이 없고 부팅시 F1 또는 F5를 눌러서 service모드로 접근
한다. 키-인(F1, F5)이 없으면 기본적으로는 Bootlist의 순서대로 기동한다. 즉, OS가 있는 하
드를 먼저 읽고, 다음으로 tape ,CD-ROM, diskette으로 부팅하려한다.


2.2 Classical RISC System/6000의 System Startup Process
POWER ON ⇒ BIST ⇒ POST ⇒ Load kernel ⇒ configuration ⇒ init
LED : 100-199 201-298 299 500-999 553
☞ BIST : Built-In Self Test - 하드웨어를 체크한다.
POST : Power-On Self Test - boot program을 읽어서 메모리에 적재한다.
ROS로부터 load되며 IPL(Initial Program Load)에 필요한 Device를 check한다.

2.3 PCI RISC System/6000의 System Startup Process

POWER ON

POST

Locate OS Bootstrap

Find AIX Boot Image

Load AIX Boot Image RAMDISK created

CONFIGURERATION MANAGER PHASE 1
▼ ▼
INIT LOAD INST from media
(Normal IPL) (Installation IPL)
☞ RAMDISK : RAM 에 형성되어지는 Boot file system을 말한다.

현재 System에 존재하는 Device를 결정하고 Configuration한다.
ROS : CPU와 모든 Logic을 체크한 후에 시스템은 IPL에 필요한 Boot device와 Environment를
Starting 시키는데 그 Program이 저장되어 있는 곳이 ROS(Read Only Storage)이다. ROS는 OS에
독립적이다.
PCI에서는 OCS(On-Chip Sequencer)가 없기 때문에 BIST가 필요없다.

2.4 Initial Processes 와 inittab 파일

2.4.1 System Initialization step

Ⅰ. BIST
Ⅱ. POST
Ⅲ. Configuration Manager For Phase One 현재 시스템에 장착된 device를
configure
Ⅳ. init() - /etc/inittab 파일을 참조하여 process를 시작
- /sbin/rc.boot : Auto Varyonvg, Config PhaseⅡ
start errdaemon , mount / ,/usr, /var, /tmp
- /etc/rc : filesystem check , mount all
- /usr/sbin/srcmstr:
- /etc/rc.tcpip: tcpip daemon start
- /etc/rc.nfs : nfs daemon start
- /usr/sbin/getty /dev/console
- /usr/cron: cron daemon start
- /usr/bin/startsrc -s qdaemon: print deemon
- /usr/bin/startsrc -s writesrv : spool subsystem
- /etc/rc.* file
Ⅴ. getty()
- /etc/passwd, group, environ, motd, utmp
- /etc/security/login.cfg, passwd, group, limits, user, faildlogin
- /etc/profile, /$HOME/.profile
- /var/adm/wtmp

2.4.2 /etc/inittab 파일의 이해

/etc/inittab 파일은 init이 시작시킬 process를 list한다. 각각의 구성요소는
File Format :
id:runlevel:action:command
id : 14자 까지, 프로세서를 지정
runlevel : 20자 까지, 보통 2 (AIX Multiuser)
action : 20자 까지, 어떻게 동작하는지 지정
respawn, wait, once, sysinit
command : 프로세서를 실행할 AIX Command
$ cat /etc/inittab
: Note - initdefault and sysinit should be the first and second entry.
:
init:2:initdefault:
brc::sysinit:/sbin/rc.boot 3 >/dev/console 2>&1 # Phase 3 of system boot
powerfail::powerfail:/etc/rc.powerfail 2>&1 | alog -tboot > /dev/console # Powen
mkatmpvc:2:once:/usr/sbin/mkatmpvc >/dev/console 2>&1
atmsvcd:2:once:/usr/sbin/atmsvcd >/dev/console 2>&1
rc:2:wait:/etc/rc 2>&1 | alog -tboot > /dev/console # Multi-User checks
fbcheck:2:wait:/usr/sbin/fbcheck 2>&1 | alog -tboot > /dev/console # run /etc/ft
srcmstr:2:respawn:/usr/sbin/srcmstr # System Resource Controller
rctcpip:2:wait:/etc/rc.tcpip > /dev/console 2>&1 # Start TCP/IP daemons
rcnfs:2:wait:/etc/rc.nfs > /dev/console 2>&1 # Start NFS Daemons
rcx25:2:wait:/etc/rc.net.x25 > /dev/console 2>&1 # Load X.25 translation table
cron:2:respawn:/usr/sbin/cron
qdaemon:2:wait:/usr/bin/startsrc -s qdaemon
writesrv:2:wait:/usr/bin/startsrc -s writesrv
uprintfd:2:respawn:/usr/sbin/uprintfd
logsymp:2:once:/usr/lib/ras/logsymptom # for system dumps
ptypa:2:respawn:/usr/sbin/getty /dev/ttypa #PCIforDOS
:infod:2:once:startsrc -s infod
tty1:2:off:/usr/sbin/getty /dev/tty1
orapw:2:wait:/etc/loadext /etc/pw-syscall4.1
strload:2:wait:/usr/sbin/strload
lft:2:respawn:/usr/sbin/getty /dev/lft0
cons:0123456789:respawn:/usr/sbin/getty /dev/console
netlsd:2:wait:sh /etc/rc.netls >/dev/console 2>&1 # start netls
2.4.3 System Resource Controller (SRC)
SRC는 subsystem을 control하는데 있어 Operator 간섭을 최소화 한다
subsystem은 어떤 기능을 수행하기위한 unit으로 design된 프로그램이나 그 집합이다.
명령 : startsrc , stopsrc, lssrc

2.5 시스템의 정지

시스템의 전원을 끌때는 적절한 Operation을 통해서 OFF해야한다. 그렇지 않으면 System의
효율을 저해하거나 file system, Data에 손상이 가해져 장애를 초래할 수 있다.
종료 절차 : $ shutdown[-option][+time message]
option -F : fast
-r : reboot
-m : manintenance mode

3.1 사용자 정보

* System을 사용하기 위한 user의 계정은 /etc/passwd 파일과 /etc/group에 해당사항이 등
록되어 있어야 한다.
# passwd file의 내용
# cat /etc/passwd
root:!:0:0::/:/bin/ksh
kdw::0:0::/:/bin/ksh
daemon:!:1:1::/etc:
bin:!:2:2::/bin:
sys:!:3:3::/usr/sys:
adm:!:4:4::/var/adm:
uucp:!:5:5::/usr/lib/uucp:
guest:!:100:100::/home/guest:
nobody:!:4294967294:4294967294::/:
lpd:!:9:4294967294::/:
nuucp:*:6:5:uucp login
user:/var/spool/uucppublic:/usr/sbin/uucp/uucico
netinst:*:200:1::/home/netinst:/usr/bin/ksh
kkk:!:201:1::/home/kkk:/usr/bin/ksh
ansi:!:204:1::/home/ansi:/usr/bin/ksh
minsky:!:205:1::/home/minsky:/usr/bin/ksh
webdb2:!:300:1::/dbspace/webdb2:/usr/bin/ksh
lion1:!:206:1::/lion/lion1:/usr/bin/ksh
kshan:!:210:1::/home/kshan:/usr/bin/ksh



* 각 라인의 포맷은 colon으로 구별되며 다음을 의미한다.
FORMAT :
login-name:password:user-id:group-id:comment:home-dir:login-shell
login-name : 사용자 등록명으로 일반적으로 8자까지의 소문자
password : 사용자 암호
user-id : 0-65534를 사용, 0-10은 시스템이 사용
group-id : 0-65534를 사용, 0-10은 시스템이 사용
comment : 사용자에 대한 설명
home-dir : 사용자의 login home directory
login-shell: 사용자 login시 사용되는 shell

* group file의 내용
# cat /etc/group
system:!:0:nuucp,root
staff:!:1:ydkong,oracle,richardr,killer,jj,kshan,lion5,lion3,lion2,lion1,webdb2t
bin:!:2:root,bin
sys:!:3:root,bin,sys
adm:!:4:bin,adm
uucp:!:5:nuucp,uucp
mail:!:6:
security:!:7:root
cron:!:8:root
printq:!:9:
audit:!:10:root
ecs:!:28:
nobody:!:4294967294:nobody,lpd
usr:!:100:guest
perf:!:20:
webdb2:!:1003:
dba:!:200:oracle
kiss:!:202:lion1
killer:!:203:killer
* 각 라인의 포맷은 colon으로 구별되며 다음을 의미한다.
FORMAT :
name:passwd:id:users
name : group의 unigue한 이름
passwd : does not used
id : group의 id
users : group의 member를 comma로 구분한다.

UNIT 3. System 사용자 관리 AIX Admin교육

3.1.1 참조파일의 이해

Read at Login
/etc/passwd
information on user's working environment

/etc/security/passwd
password and/or Restrict
Read for file access
/etc/group
group IDs and Members

/etc/security/group
group IDs and restricts
Process creation
/etc/security/limits
environmental limit for all user



Read at login
/etc/security/user
user authorization

/etc/security/login.cfg
Port available
/Passwd Restricts

3.1.2 User Initialization Process

------+---------------------+---------------------+---------> user
| | | environment
/etc/environment /etc/profile $HOME/.profile
* /etc/profile : system-wide한 default값을 control하는 shell script
* /etc/environment : 모든 process에 대한 기본적인 환경을 specify한다.
* $HOME/.profile : user의 home directory에 있는 user자신의 profile

3.2 SMIT를 사용한 새로운 사용자 등록

# smit
→ security & users
→ users
→ add a user
Add a User
[TOP] [Entry Fields]
* User NAME [user1]
User ID [] #
ADMINISTRATIVE USER? False +
Primary GROUP [] +
Group SET [] +
ADMINISTRATIVE GROUPS [] +
ROLES [] +
Another user can SU TO USER? true +
SU GROUPS [ALL] +
HOME directory []
Initial PROGRAM []
User INFORMATION []
EXPIRATION date (MMDDhhmmyy) [0]
Is this user ACCOUNT LOCKED? false +
User can LOGIN? true +
User can LOGIN REMOTELY? true +
Allowed LOGIN TIMES []
Number of FAILED LOGINS before [1] #
User account is locked
Login AUTHENTICATION GRAMMAR [compat]
Valid TTYs [ALL]
Days to WARN USER before password expires [0] #
Password CHECK METHODS []
Password DICTIONARY FILES []
NUMBER OF PASSWORDS before reuse [0] #
[MORE...25]
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

3.3 사용자의 Password 변경

#smit
→ security & users
→ users
→ Change a user's Password
또는 # passwd user-name
3.4 사용자의 특성 바꾸기
# smit → security & users
→ users
→ Change/Show Characteristics of a user
* User NAME [richard] +
Change / Show Characteristics of a User
[TOP] [Entry Fields]
* User NAME user1
User ID [213] #
ADMINISTRATIVE USER? false +
Primary GROUP [staff] +
Group SET [staff] +
ADMINISTRATIVE GROUPS [] +
ROLES [] +
Another user can SU TO USER? true +
SU GROUPS [ALL] +
HOME directory [/home/user1]
Initial PROGRAM [/usr/bin/ksh]
User INFORMATION []
EXPIRATION date (MMDDhhmmyy) [0]
Is this user ACCOUNT LOCKED? false +
User can LOGIN? True +
User can LOGIN REMOTELY? true +
Allowed LOGIN TIMES []
Number of FAILED LOGINS before [1] #
User account is locked
Login AUTHENTICATION GRAMMAR [compat]
Valid TTYs [ALL]
Days to WARN USER before password expires [0] #
Password CHECK METHODS []
Password DICTIONARY FILES []
NUMBER OF PASSWORDS before reuse [0] #
[MORE...25]

3.4 group 의 관리

3.4.1 SMIT를 이용한 group 추가

# smit
→ security & users
→ groups
Groups
Move cursor to desired item and press Enter.
List All Groups
Add a Group
Change / Show Characteristics of a Group
Remove a Group
F1=Help F2=Refresh F3=CancelEsc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do
Add a Group
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Group NAME [power]
ADMINISTRATIVE group? false +
Group ID [] #
USER list [] +
ADMINISTRATOR list [] +
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

3.4.2 SMIT를 이용한 group의 속성변경

# smit
→ security & users
→ groups
→ Change / Show Characteristics of a Group
Change Group Attributes
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Group NAME [power]
Group ID [203] #
ADMINISTRATIVE group? false +
USER list [killer] +
ADMINISTRATOR list [root] +
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=EditEsc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

3.4.3 SMIT를 이용한 group의 삭제

# smit
→ security & users
→ groups
→ Remove a Group
Remove a Group from the System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Group NAME [power] +

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


3.5 현재 시스템 사용자 보기

* who - 현재 시스템 사용자를 보여준다.
kdcsi1:/> who
minsky pts/0 Feb 02 11:23 (203.225.28.94)
root pts/3 Feb 02 09:14 (203.225.28.173)


* finger - usr에 대한 정보를 화면에 보여준다.
kdcsi1:/> finger
Login Name TTY Idle When Site Info
Minsky ??? p0 1 Mon 11:23
Root ??? p3 Mon 09:14
*
w - 어느user가 login해서 무슨 작업을 하는지 보여준다.
kdcsi1:/> w
11:25AM up 2 days, 36 mins, 2 users, load average: 0.01, 0.02, 0.03
User tty login@ idle JCPU PCPU what
Minsky pts/0 11:23AM 2 0 0 -ksh
Root pts/3 09:14AM 0 4 0 w

3.6 ACL(Access Control Lists)

▶ ACL은 standard permission bits를 확장하고자 할 경우 사용한다
즉, 어떤 file에 user나 group별로 특정 permission을 부여하고자 할 경우 사용한다.
$ export EDITOR= /usr/bin/vi
$ aclget sample-file1
attributes:
base permissions
owner(frank): rw-
group(staff): r--
others: r--
extended permissions
disabled
▶ sample-file1의 파일허가 이해
- frank user : read, write only
- staff group의 users : read only
- other users: none
$ acledit sample-file1
attributes:
base permissions:
owner(frank): rw-
group(staff): r-
others: r--
extended permissions:
enabled
permit rw- u:dhs
permit rw- g:account
deny r-- u:chas, g:system
▶ acledit한 후의 sample-file1의 파일허가 이해
- frank user : read, write만 가능
- staff group의 users : read only
- other users: read only
- dhs user: read, write 가능
- account group의 users : read, write 가능
- system group내에 있는 chas user만 : read deny
3.7 crontab
▶ 시스템에서 주기적으로 특정한 process를 실행시키기 위하여 crontab에 등록한다.
▶ 관련 파일은 /var/spool/cron/crontabs/*에 존재한다.

3.7.1 cron process 확인

# ps -ef |grep cron
root 2598 1 0 08:55:31 - 0:00 /usr/sbin/cron
◆ 만약 cron process가 존재하지 않으면 /etc/inittab file에 등록한다.
# vi /etc/inittab
cron:2:respawn:/usr/sbin/cron# 이 부분을 edit한다.
# telinit q
3.7.2 crontab의 내용 보기
# crontab -l
.
0 11 * * * /usr/bin/errclear -d S,O 30
0 12 * * * /usr/bin/errclear -d H 90
3.7.2 crontab에 프로세스 등록하기

◆ 매월 매주 월요일 02:00 (a.m)에 실행되는 'date'명령을 crontab에 등록하기.
# crontab -e
.
0 2 * * 1 /usr/bin/date# 이 부분 추가

3.7.3 crontable의 필드 구분

minute hour day_of_month month weekday command
weekday : 0 (Sun) , 1 (Mon) , , , 6 (Sat)
command : full path name으로 명령어를 등록한다.


UNIT4. Device

4.1 장치 개요

4.1.1 Device Terminology (용어)

* Physical device : Hardware를 의미한다.
* Ports : Physical device가 붙는 Physical한 connector나 adapter.
* Device Driver : device로 보내질 data의 format과 port에서의 activity를 control하는
kernel에 있는 소프트웨어.
* Logical Device : physical device를 user와 application이 access하게하는 Software
interface(special files). Logical device에 추가된 data는 적당한 device driver로 보내지져
읽히게 된다.
* /dev directory : user에 의해 직접 access될 수 있는 Logical Device를 포함하는 directory.
* /dev directory를 list하기위한 명령
# ls -l /dev

4.1.2 장치 구성 데이터 베이스

▲ 시스템에서 제공하는 모든 장치에 대한 구성 자료를 포함
▲ 이미 정의된 데이터 베이스와 현재 변경된 모든 장치의 구성 자료에 대한 조정 된 데이터베이스로
구성
▲ 계층적 부류로 구성

4.1.3 Device States (상태)

▲ Undefined : 시스템에 알려지지 않은 상태
▲ Defined : 장치의 특성, 정보를 시스템이 가지고 있으나 운용이 불가능한 상태
▲ Available : 장치가 사용가능한 상태

4.1.4 장치관리 명령

# mkdev : 시스템에 새로운 장치를 정의하거나 구성을 한다.
# rmdev : 장치의 구성 해제 (Available --> Defined, Undefined)
# lsdev : 조정된 데이터베이스의 장치를 일람
# lsattr : 한 장치의 모든 속성이나 지정된 특정 속성에 대한 현재 또는 생략시 속성값 일람
# chdev : Available 또는 Defined 상태의 device 속성변경
# cfgmgr : 시스템이 작동한후 추가된 장치에 대한 self configuration



4.2 Device Addressing (장치 주소)

* Device Addressing을 표현하기 위하여 Location code가 쓰인다.
* Location code는 CPU drawer또는 system unit에 있는 adapter로부터 케이블을 통 하여
device에 이르는 경로이다.

4.2.1 Location code format For Non-SCSI Device

AA-BB-CC-DD
AA : I/O Bus와 CPU drawer속의 bus위 Slot number
BB : I/O Bus identifier(0:MCA,PCI 1:ISA)와 Device의 slot number
CC : adapter위의 Connerctor (OP,OS,S1,S2,0D,0K,0M,0T...)
DD : Async port number 또는 FRU location

4.2.2 Location code format For SCSI Device

AA-BB-CC-S,L
AA : 보통 00
BB : I/O bus 와 bus위의 adapter card slot
CC : 00 - single SCSI bus를 제공하는 card나 dual SCSI를 위한
internal bus에 연결된 device
01 - dual SCSI 위의 external bus에 연결된 device
0S - integrated된 SCSI controller의 External bus connector
S : device의 SCSI address
L : device의 Logical unit number

4.2.3 Location code format For RCI RISC System 6000

AA-BB-CC-DD
AA : 항상 00
BB : 첫 번째 B : 0=pci, 1=isa, 2=pcmcia
두 번째 B : slot , 단 ISA adapter는 x
CC : connector designation 또는 00
DD : port number 또는 address

4.3 Self-Configuration manager

* Configuration manager (cfgmgr)는 시스템 작동 중이나 booting시에 자동으로 찾아낼 수 있는
device를 configure한다.
* Self-configurable device는 ROM chip에 unique한 identifying code를 저장한다.
* 외장형 Device의 경우 cfgmgr이 실행되기 전에 power on되어 있어야 한다.
ASCⅡ terminal, printer 등은 cfgmgr에 의해 자동으로 configure되지 않는다.


4.4 입출력의 이해

명령은 보통 키보드(표준입력)에서 읽어, 그 명령을 처리하고, 그 결과를 화면(표준출력)에 보
여준다. 그러나 종종 파일에서 입력을 읽고, 파일에 그 출력을 쓰고, 그 오류를 파일에 쓰는
명령을 쓸 때 한 명령 또는 모든 명령을 다른 명령의 입력으로 하고자 한다. 이 모든 동작은
재지정과 파이프라인을 사용하여 수행한다.

--------------------------------------------------------------------------

5. 주변장치 관리

5.1 Serial Device 케이블 결선도

◎ DTE (Data Terminal Equipment) : 터미널 , 프린터
RXD <-------------> TXD
TXD <-------------> RXD
GND <-------------> GND

◎ DTE (Data Terminal Equipment) : 모뎀
RXD <-------------> TXD
TXD <-------------> RXD
GND <-------------> GND

◎ 일반적인 RS-232C 케이블 구성도
NO of Pin
TXD
RXD
GND
25
2
3
7
9
3
2
7
8
3
5
4
6
1
3
5

5.2 터미널 관리

터미널 Emulator를 사용하여 pc를 terminal로 사용할 경우와 Dummy terminal (ex:
IBM3151,IBM3161,....)을 사용할 경우 케이블을 DTE로 연결한다.
가상 터미널
Vt100

Vt220
의사 터미널
PTY

PTS

PTC
더미 터미널
Dumb


5.2.1 TERMINAL추가

# smitty -> device -> TTY
TTY
Move cursor to desired item and press Enter.
List All Defined TTYs
Add a TTY
Move a TTY to Another Port
Change / Show Characteristics of a TTY
Remove a TTY
Configure a Defined TTY
Generate Error Report
Trace a TTY

TTY
Move cursor to desired item and press Enter.
List All Defined TTYs
Add a TTY
Move a TTY to Another Port
Change / Show Characteristics of a TTY
Remove a TTY
Configure a Defined TTY
Generate Error Report
Trace a TTY
TTY Type
Move cursor to desired item and press Enter.
tty rs232 Asynchronous Terminal
tty rs422 Asynchronous Terminal

TTY
Move cursor to desired item and press Enter.
List All Defined TTYs
Add a TTY
Move a TTY to Another Port
Change / Show Characteristics of a TTY
Remove a TTY
Configure a Defined TTY
Generate Error Report
Trace a TTY
Parent Adapter
Move cursor to desired item and press Enter.
sa0 Available 00-00-S1 Standard I/O Serial Port 1
sa1 Available 00-00-S2 Standard I/O Serial Port 2
F1=Help F2=Refresh F3=Cancel
Esc+8=Image Esc+0=Exit Enter=Do
/=Find n=Find Next


Add a TTY
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
TTY type tty
TTY interface rs232
Description Asynchronous Terminal
Parent adapter sa0
* PORT number [] +
Enable LOGIN disable +
BAUD rate [9600] +
PARITY [none] +
BITS per character [8] +
Number of STOP BITS [1] +
TIME before advancing to next port setting [0] +#
TERMINAL type [dumb]
FLOW CONTROL to be used [xon] +
[MORE...29]
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


5.2.2 TERMINAL삭제

# smitty -> device -> TTY -> Remove a TTY
TTY
Move cursor to desired item and press Enter.
List All Defined TTYs
Add a TTY
Move a TTY to Another Port
Change / Show Characteristics of a TTY
Remove a TTY
Configure a Defined TTY
Generate Error Report
Trace a TTY
TTY
Move cursor to desired item and press Enter.
tty0 Available 00-00-S1-00 Asynchronous Terminal
tty1 Available 00-00-S2-00 Asynchronous Terminal
F1=Help F2=Refresh F3=Cancel
Esc+8=Image Esc+0=Exit Enter=Do
/=Find n=Find Next


5.2.3 TERMINAL활성화(available)

# smitty -> device -> TTY -> Configure a Defined TTY
TTY
Move cursor to desired item and press Enter.
List All Defined TTYs
Add a TTY
Move a TTY to Another Port
Change / Show Characteristics of a TTY
Remove a TTY
Configure a Defined TTY
Generate Error Report
Trace a TTY
TTY
Move cursor to desired item and press Enter.
Tty0 Available 00-00-S1-00 Asynchronous Terminal
tty1 Available 00-00-S2-00 Asynchronous Terminal
F1=Help F2=Refresh F3=Cancel
Esc+8=Image Esc+0=Exit Enter=Do
/=Find n=Find Next

5.3.1 프린터추가

# smit -> Device -> Printer/Plotter -> Print /Plotter device -> Add a Printer/Plotter

Printer/Plotter Devices
Move cursor to desired item and press Enter.
List All Defined Printers/Plotters
List All Supported Printers/Plotters
Add a Printer/Plotter
Move a Printer/Plotter to Another Port
Change / Show Characteristics of a Printer/Plotter
Remove a Printer/Plotter
Configure a Defined Printer/Plotter
Install Additional Printer/Plotter Software
Generate Error Report
Trace a Printer/Plotter

Printer/Plotter Devices
Printer/Plotter Type
Move cursor to desired item and press Enter.
hplj-4si Hewlett-Packard LaserJet 4Si
hplj-4v Hewlett-Packard LaserJet 4V
hplj-5si Hewlett-Packard LaserJet 5Si/5Si MX
hplj-5si Mopier Hewlett-Packard LaserJet 5Si Mopier
hplj-5si Mopier Hewlett-Packard LaserJet 5Si Mopier
hplj-c Hewlett-Packard LaserJet Color
opp Other parallel printer
osp Other serial printer

Printer/Plotter Devices
Printer/Plotter Interface
Move cursor to desired item and press Enter.
Parallel
rs232
rs422
F1=Help F2=Refresh F3=Cancel
Esc+8=Image Esc+0=Exit Enter=Do
/=Find n=Find Next

Printer/Plotter Devices

Parent Adapter
Move cursor to desired item and press Enter.
Ppa0 Available 00-00-0P Standard I/O Parallel Port Adapter
F1=Help F2=Refresh F3=Cancel
Esc+8=Image Esc+0=Exit Enter=Do
/=Find n=Find Next


UNIT 5. 주변장치 관리 AIX Admin교육
----------------------------------------------------------------------
----


Add a Printer/Plotter
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
Printer/Plotter type hplj-2
Printer/Plotter interface parallel
Description Hewlett-Packard LaserJ>
Parent adapter ppa0
* PORT number [p0] +
Type of PARALLEL INTERFACE [standard] +
Microseconds to delay between characters [0] +#
Printer TIME OUT period [600] +#
STATUS of device at BOOT time available +
Ignore the following attributes when using
the Print Queue:
[MORE...13]
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

5.3.2 Printer Queue 추가

# smit -> device -> Printer/Plotter -> Print Spooling -> Add a print queue
이후 여러개의 pop-up List가 뜨게 된다.
△ Printer Type
△ Printer Interface
△ Parents adapter 등
Print Spooling
Move cursor to desired item and press Enter.
Start a Print Job
Manage Print Jobs
List All Print Queues
Manage Print Queues
Add a Print Queue
Add an Additional Printer to an Existing Print Queue
Change / Show Print Queue Characteristics
Change / Show Printer Connection Characteristics
Remove a Print Queue
Manage Print Server
Programming Tools

Add a Print Queue
[Entry Fields]
Description LASERJET2 Printer
Printer connection characteristics
* PORT number [p] +
Type of PARALLEL INTERFACE [standard] +
Printer TIME OUT period (seconds) [60] +#
STATE to be configured at boot time available +
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


Unit 6. Paging Space

6.1 개요

paging space는 가상 기억 장치기법을 이용한다. 즉 process가 memory내에 존재하지 않아
도 수행이 가능한 기법이다. disk의 특정영역을 paging spase란 가상기억장치로 두고, 사용자
논리 메모리를 실재 메모리와 분리 시킴으로서 메모리의 한계를 극복하는 기법이다.
따라서 paging space는 Hard Disk에 존재하는 현재 접근하지 않는 정보에 대한 고정 디스크
영역이다. 시스템에서 사용 가능한 실재 memory영역이 적으면, 다른 작업에 사용할 실재
memory영역을 해제 하기위하여 최근에 사용되지 않았던 프로그램이나 자료를 paging space
로 이동시킨다.
paging space는 교체공간이라고도 불리우는데 속성유형이 paging인 logical volume이다.
논리적 볼륨의 이름은 hd6, hd61, paging00, paging01 등의 이름으로 생성된다.

# lsps -a : 이 명령은 시스템내의 모든 paging space를 보여준다.

6.1.1 paging space allocation policy의 이해
paging space의 요구량은 시스템에서 수행되는 작업의 종류에 의존한다. paging space의 양
이 너무 적으면 process가 중단될 수 있고, paging space의 양이 너무 많으면 시스템의 효율
이 떨어진다. paging space가 적은 상태가 감지되면, 추가적인 paging space가 필요하다.

6.1.2 paging space 관리

* paging space관리를 위한 명령어

chps
Paging space 의 속성을 변경한다.
Lsps
Paging space의 특성을 출력한다.
Mkps
Paging space을 추가한다.
rmps
사용하지 않는 paging space를 제거한다.
swapon
Paging space를 활성화 한다.



6.2 Paging space의 추가

# smit -> system storage management -> Logical Volume Manager -> paging space
-> Add Another Paging Space
# smit ps -> Add Another Paging Space

Add Another Paging Space
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Volume group name rootvg
SIZE of paging space (in logical partitions) [] #
PHYSICAL VOLUME name +
Start using this paging space NOW? no +
Use this paging space each time the system is no +
RESTARTED?

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


6.3 Paging space의 변경

# smit -> system storage management -> Logical Volume Manager -> paging space
-> Change / Show Characteristics of a Paging Space
# smit ps -> Change / Show Characteristics of a Paging Space

Change / Show Characteristics of a Paging Space
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Paging space name hd6
Volume group name rootvg
Physical volume name hdisk0
NUMBER of additional logical partitions [] #
Use this paging space each time the system is yes +
RESTARTED?
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


6.4 Paging space의 삭제

# smit -> system storage management -> Logical Volume Manager -> paging space
-> Remove a Paging Space
# smit ps -> Remove a Paging Space

Remove a Paging Space
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
PAGING SPACE name +

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


Unit 7 File System

7.1 개요

AIX 파일 시스템은 file과 directory의 계층적 구조 (파일트리)이다.
파일트리는 directory를 사용하여 자료와 프로그램을 그룹으로 구성하고 한 번에 여러 directory와 file
을 관리하도록 한다.
다음은 File System에 대한 기본적인 내용이다.
♣ 저널 파일 체계 (Journal File System)
· 데이터 베이스 저널 기술을 사용하여 구조적 일관성을 유지
· 시스템이 갑자기 중지되었을 때 파일 시스템의 손상예방
· 단일 논리적 볼륨
· 민감한 data의 제어 용이
· 특정 파일 시스템의 성능향상 기대
· 파일 시스템별 backup & restore 용이
· 보안
· 파일 시스템 생성용이

♣ 모든 파일과 directory는 논리적 볼륨안의 파일 시스템에 속한다.
파일 시스템에 access하기 위해서는 Mounting point에 Mount(적재)되어 있어야 한다.
♣ 여러 파일 시스템이 mount되어 있을 때 하나의 파일 시스템 모양을 갖는 directory구조가 생성된
다. 하나의 루트와 함께 계층구조가 있는데, 이 구조는 AIX 파일 시스템 및 사용자가 생성한 모든
파일 시스템을 포함한다.
♣ 저널 파일 시스템의 요소
·super bolck - fs size, identification, Free list, fragment size, nbpi
·inodes - file size, ownership, permission, times, pointers to data block
·block - Data block, Indirect block


7.2 기본적인 파일 시스템

name
Mounting point
Description
/dev/hd1
/home
user's home directory
/dev/hd2
/usr
OS command, libraries and Application programs
/dev/hd3
/tmp
Space accessible to all user for temporary files and work
space
/dev/hd4
/
It contains the files and directories critical for system
operation including the divice directory and program that
configure boot process
/dev/hd9var
/var
variable spool and log file
/dev/hd6

paging space
☞ 위의 각 저널 파일 체계는 분리되어 논리적 볼륨에 존재한다. 운용시스템이 초기화하는 동안 이들
을 적재하게 된다. 이러한 파일 시스템 조정은 파일 트리의 일부를 분리하여 작업할 수 있도록 해주
므로 백업, 재저장 및 보수유지와 같은 시스템 관리 기능에 유용하다.

7.3 파일 시스템 유형의 이해

♣ 저널 파일 시스템
AIX 의 대표적 파일 시스템의 유형이다.
♣ CD-ROM 파일 시스템
CD-ROM의 내용을 일반 파일 시스템접속 (읽기,열기,닫기)으로 접근하도록 해주는 유형
♣ NFS 파일 시스템
원격 기계에 존재하는 파일이 마치 국지 기계에 있는 것 같이 접근하도록 해주는 유형
♣ 파일 시스템 명령어
chfs
파일 시스템의 특성을 변경한다.
Crfs
파일 시스템을 추가 한다.
Lsfs
파일 시스템의 특성을 화면에 표시한다.
Rmfs
파일 시스템을 삭제한다.
Mount
파일 시스템을 사용 가능하게 적재한다.


7.4 파일 시스템 관리 작업

·논리적 볼륨상의 파일 시스템 공간할당
·파일 시스템 생성
·파일 시스템 공간을 시스템 사용자에게 사용가능하게 함
·파일 시스템 공간 사용 관리
·시스템 문제 발생시자료 손실에 대비한 파일 시스템 백업
·파일 시스템을 일관성있는 상태로 유지

♣ 파일 시스템 작업관련 명령어

backup
파일 시스템 전체 또는 점진적 백업을 수행한다.
Dd
파일 시스템의 백업을 위해 한 장치로부터 다른 장치로 직접 자료를 복사한다.
Df
파일 시스템에서 사용된 양과 free인 양을 보고한다.
Fsck
파일 시스템을 검사하고 불일치를 교체한다.
Mkfs
지정 논리적 볼륨상의 지정크기 파일 시스템을 생성한다.
Mount
파일 시스템을 다른 지명 구조에 적재한다.
Restore
백업으로부터 파일을 재저장한다.
Unmount
Mount와의 반대개념을 수행한다.

7.5 파일 시스템의 구성

7.5.1 root(/) filesystem

·/etc : 기계에 따라 변경되는 조작파일을 포함한다. 예: hosts , passwd 일반적으로 시스템 관리에 사
용되는 파일을 포함한다. /etc 에 존재했던 대부분의 명령은 /usr/bin directory에 연결되어 있다.
호환을 위해서 일부 실행 파일은 새로운 위치와 기호적 연결 (symbolic link)
·/bin : /usr/bin의 기호적 연결
·/sbin : 기계를 시동하고 /usr파일 시스템을 적재하기 위하여 필요한 파일
·/dev : 국지 장치 특수 파일의 노드를 포함한다.
·/export: 원격 사용자를 위한 서버상의 directory 및 파일을 포함한다.
·/lib : 라이브러리 함수를 포함한다.
·/tftpboot : 네트웍 부팅시 필요한 tftp directory

7.5.2 /var filesystem

·/var: 변수나 spool에 관련된 directory및 파일을 포함한다.

7.5.3 /tmp filesystem

·/tmp: 시스템이 생성한 임시 파일을 포함하는 파일 시스템의 적재지점이다.

7.5.4 /usr filesystem
· /usr: 기계가 바뀌어도 변하지 않으며 공유할 수 있는 실행 파일을 포함한다.
OS,Xwindow및 주요 시스템 프로그램(LPP)등이 설치된 directory이다.

7.5.5 /home filesystem

· /home : 사용자의 home directory를 포함하는 파일 시스템이다.
· /u : /home directory의 기호적인 연결이다.

7.6 File system의 추가

#smit -> system storage management -> file systems
-> add/change./show/delete file systems
-> Journaled file systems -> Add a Journaled file system
-> Add a Standard Journaled file system


# smit jfs -> Add a Journaled file system

Add a Standard Journaled File System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Volume group name rootvg
* SIZE of file system (in 512-byte blocks) [ 100000 ] #
* MOUNT POINT [ /sample ]
Mount AUTOMATICALLY at system restart? no +
PERMISSIONS read/write +
Mount OPTIONS [] +
Start Disk Accounting? no +
Fragment Size (bytes) 4096 +
Number of bytes per inode 4096 +
Allocation Group Size (MBytes) 8 +

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

7.7 File system의 적재 ( mount )

# smit -> system storage management -> file systems -> Mount a file system
# mount /sample
Mount a File System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
FILE SYSTEM name [/sample] +
DIRECTORY over which to mount [] +
TYPE of file system +
FORCE the mount? no +
REMOTE NODE containing the file system []
to mount
Mount as a REMOVABLE file system? no +
Mount as a READ-ONLY system? no +
Disallow DEVICE access via this mount? no +
Disallow execution of SUID and sgid programs no +
in this file system?




7.8 File system의 적재해제 ( umount )

# smit -> system storage management -> file systems -> unmount a File system
# umount /sample
Unmount a File System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
Unmount ALL mounted file systems? no +
(except /, /tmp, /usr)
-OR-
Unmount all REMOTELY mounted file systems? no +
NAME of file system to unmount [/sample] +
REMOTE NODE containing the file system(s) []
to unmount

7.9 File system의 삭제

# smit -> system storage management -> file systems -> add/change./show/delete file systems -
> Journaled file systems -> Remove a Journaled file system
# smit rmfs
# rmfs /sample
Remove a Journaled File System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* FILE SYSTEM name /sample +
Remove Mount Point no +
F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do
FILE SYSTEM name
Move cursor to desired item and press Enter.
/
/usr
/tmp
/var
/home
/sample



Unit 8. Logical Volume manager

8.1 개요

Logical Volume Manager는 Logical volume의 크기를 여러 Physical volume으로 확장하여 고
정된 Physical volume에서 Disk를 융통성있는 시스템으로 만들어 준다. 몇 개의 Physical
Volume은 Volume Group으로 함께 Volume지어지며 각 Volume group은 Logical volume을
포함하지 않거나 하나 이상의 Logical volume을 포함한다.
Logical volume은 Physical volume에 위치한 정보의 Volume이다. Logical volume의 자료는
사용자에게 연속적으로 보이지만, Physical Volume에서는 비연속적이 될 수 있다.
시스템 설치후에, 시스템은 시스템을 시동하는데 필요한 Logical volume의 기준집합을 구성하
는 root 볼륨Volume과 User가 정의하는 다른 볼륨Volume을 갖고 있다. 마찬가지로, 시스템
에 연결된 다른 Physical Volume을 Volume group에 추가할 수 있으며, rootvg와 다른 볼륨
에서도 Physical Volume group을 추가할 수 있다. Logical volume은 주로 메뉴 방식의 SMIT
를 이용한여 관리한다.
Logical Volume의 잇점
△ Logical Volume은 비연속적인 공간이다.
△ Logical Volume은 여러개의 disk를 걸칠수 있다.
△ Logical Volume size 를 쉽게 변환할 수 있다.
△ mirroring이 가능하다.
△ 시스템에 hard disk를 쉽게 붙일 수 있다.
△ Logical Volume은 relocate 될 수 있다.

8.2 Volume Group의 이해

하나의 volume group은 시스템내에서 15자 이내의 유일한 이름을 가지며 다양한 크기와 유
형을 갖는 1-32개의 physical Volume으로 구성된다. 각 AIX 시스템은 1-225개의 Volume
group을 갖는다. 각 Physical Volume 은 여러개의 Physical partion으로 구성되며 한 logical
Volume에 대한 Physical Partition은 하나의 Volumegroup에만 속해야한다. 한 Volumegroup
은 변경, 확장, 축소, 생성, 열람, 반출(제거), 반입(설치), 재구성 할 수 있다. 시스템 설치 후,
시스템은 시스템을 시동하는데 필요한 logical Volume의 기준 집합을 구성하는 하나의
Volume과 설치각본에서 지정하는 다른 Volumegroup으로 구성된다. 또한 Volume group이나
이미 생성쇤 다른 Volume group에 추가할 수 있다.
소형시스템은 시스템에 부착된 모든 Physical Volume을 포함하기 위하여 하나의 Volume
group이면 충분하지만, 대형 시스템은 추가적인 Volume group이 필요하다. 예를 들어, 하나
이상의 시스템에 실제로 부착된 디스크 Volume은 어느 시스템에서는 logical이으로 재구성할
수 있다. 또한 사용자는 보안이나 유지보수 이유로 디스크 Volume을 분할하는 Volume group
을 생성할 수도 있다.

8.3 Varyonvg 및 Varyoffvg Process

varyonvg와 varyoffvg 명령은 시스템에서 이미 알려진 Volume group을 활성화하거나 비활성
화 한다. Volume group을 access하기 위해서는 varyonvg가 되어야 한다. varyonvg(활성화)
하는 동안에 Volume group 지정자 영역(VGDA)과 logical Volume Manager 프로그램은
Volume group에 정의된 Physical Volume에서 관리자료(PVID)를 읽는다. Volume group 상태
영역을 포함하는 관리자료(PVID)는 사용도를 증가 시키기 위하여 Volume group내의 모든
Physical Volume에 저장되어 있다.

8.4 Physical Volume 의 이해

Physical Volume은 영구적으로 시스템 범위의 유일한 식별자가 배정된 컴퓨터에 Physical로
부착된 읽기/쓰기 디스크이다. 이것은 extendvg 명령을 사용하여 Volume group에 추가할 수
있고, reducevg 명령을 사용하여 Volume group에서 제거 할 수 있다. Volume group에 추가
될 때, Physical Volume은 Physical Partition이라는 연속적이고, 같은 크기의 영역(Physical
Partition)으로 분할된다.
Physical disk는 디스크가 시스템 시동시에 첫 번째로 검출되나 시스템 관리명령이 시스템에
디스크를 추가하기 위해 실행시간에 사용될 때 이름 (예 : hdisk#)이 배정된다.

8.5 Physical Partition ( Physical Partition )의 이해

logical Volume manager는 Physical Partition을 디스크 영역 할당의 가장 작은 단위로 취급한
다. Physical Partition은 특정 Physical Volume상에서 같은 크기를 갖는 디스크 영역의 세그먼
트이다.
Physical Partition의 크기는 Physical Volume이 Volume group에 추가될 때 결정되며
Physical Volume은 Volume group의 Physical Partition 크기를 따른다. Partition크기를 작게
만드는 것이 Disk 가용성을 증가 시킬 수는 있지만, 정보를 관리하고 저장하는데 더 많은 시스
템 처리시간을 필요로 한다.

8.6 Logical Volume 의 이해

logical Volume은 Physical Partition으로 구성되는 logical Partition의 집합이며, 하나의
Volume group에 포함된다. 각 Physical Volume내에는 Physical Partition이 존재하고
Physical Partition은 Logical Partition에 의해 조직화되며, logical Volume을 형성한다. logical
Volume은 확장 가능하며 Volume group 내에서 여러개의 Physical Volume에 걸쳐 있을 수
있다.
8.7 Logical Partition 의 이해
logical Volume의 크기는 logical Partition수에 따라 결정된다. logical Partition은 1-3까지의
Physical Partition으로 이루어진다. logical Volume 내에서의 logical Partition 갯수는 유동적이
며 logical Volume이 생성될 때 결정된다.


8.8 LVM ( Logical Volumn Manager )의 예

# smit
-> system storage management
# smit lvm

System Storage Management (Physical & Logical Storage)
Move cursor to desired item and press Enter.
Logical Volume Manager
File Systems
Files & Directories
Removable Disk Management
System Backup Manager


Logical Volume Manager
Move cursor to desired item and press Enter.
Volume Groups
Logical Volumes
Physical Volumes
Paging Space

F1=Help F2=Refresh F3=Cancel Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

--------------------------------------------------------------------------

Volume Groups
Move cursor to desired item and press Enter.
List All Volume Groups
Add a Volume Group
Set Characteristics of a Volume Group
List Contents of a Volume Group
Remove a Volume Group
Activate a Volume Group
Deactivate a Volume Group
Import a Volume Group
Export a Volume Group
Mirror a Volume Group
Unmirror a Volume Group
Back Up a Volume Group
Remake a Volume Group
List Files in a Volume Group Backup
Restore Files in a Volume Group Backup


Logical Volumes
Move cursor to desired item and press Enter.
List All Logical Volumes by Volume Group
Add a Logical Volume
Set Characteristic of a Logical Volume
Show Characteristics of a Logical Volume
Remove a Logical Volume
Copy a Logical Volume

--------------------------------------------------------------------------

Physical Volumes
Move cursor to desired item and press Enter.
List All Physical Volumes in System
Add a Disk
Change Characteristics of a Physical Volume
List Contents of a Physical Volume
Move Contents of a Physical Volume



Unit 9. System Backup and Restore

AIX 시스템을 사용할 때 고려해야 할 사항은 파일 시스템, directory, 그리고 파일의 배업에 관
한 것이다. 파일과 directory는 많은 시간과 노력이 투자된 중요한 요소이다. 그럼에도 불구하
고, 고의 또는 우연에 의해 모든 컴퓨터파일은 쉽게 변하거나 제거될 수 있다. 그러므로 파일
시스템을 백업하여 놓는다면 약간의 노력으로 파일 또는 파일 시스템을 복원할 수 있다.
* Backup의 Type

System backup
OS의 image backup을 기록한다.
Full backup
모든 user의 data 파일과 configuration 파일을 보관한다.
Incremental backup
마지막 Full backup이후의 변화를 기록한다.

9.1 backup strategey
+--------------------+
+------------▷ | system backup |
| +--------------------+
|
| ▼
|
| +---------------+
| +------▷ | Full backup |
| | +---------------+
| |
| | ▼
| |
| | +----------------------+
| | | Incremental backup |
| | +----------------------+
| |
| | ▼
| |
| +-------- +----------------------+
+--------------- | Incremental backup |
+----------------------+

9.2 backup media의 이해

backup에는 주로 diskette (/dev/fd0) 과 tape(/dev/rmt0)이 쓰이고 있다.
diskette은 주로 작은 크기의 file을 위해 쓰이며 3.5"와 5.25"가 있다. tape은 주로 4mm
DAT tape drive 와 8mm tape drive 등이 쓰이는데 backup시에 가장 많이 쓰이는 장치이다.

9.3 backup 명령

다음은 backup 을 위한 명령들이다.
backup
이름 또는 I-노드 번호에 의해 파일을 백업한다.
Cpio
보존용 기억영역의 안팎으로 파일을 복사한다.
Dd
파일을 변환하고 복사한다.
Tar
보존파일을 처리한다.
Rdump
원격 기계장치로 I-노드에 의해 백업한다.
Pax
tar 명령을 생성하고 인용하며 cpio 명령으로 보관한다.

9.4 Restore

자료가 적절한 방법으로 backup 되었을 때, 사용한 자료의 유형에 의존하여 자료를
restore(복원)하는 여러 가지 방법이 있다.
다음은 restore를 위한 명령이다.
restore
backup 명령에 의해 생성된 파일을 복원한다.
Rrestore
원격 기계에 존재하는 파일 시스템을 국지 기계로 복사한다.
Cpio
보존용 기억영역과 상호 파일을 복사한다.
Tar
보존 backup을 처리한다.
? backup은 대상에 따라 여러 가지 smit메뉴에서 나타난다.


9.5 System Backup

# smit -> System Storage Management -> system backup manager -> Backup the system
# smit mksysb


Back Up the System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
WARNING: Execution of the mksysb command will
Result in the loss of all material
Previously stored on the selected
Output medium. This command backs
Up only rootvg volume group.
* Backup DEVICE or FILE [/dev/rmt0] +/
Create MAP files? no +
EXCLUDE files? no +
List files as they are backed up? no +
Generate new /image.data file? yes +
EXPAND /tmp if needed? no +
Disable software packing of backup? no +
Number of BLOCKS to write in a single output [] #
(Leave blank to use a system default)
[BOTTOM]

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

9.6 Backup a File System

# smit -> System Storage Management -> File Systems -> Backup a File system
# smit backup
Backup a File System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
This option will perform a backup by inode.
* FILESYSTEM to backup [] +/
* Backup DEVICE [/dev/rmt0] +/
Backup LEVEL (0 for a full backup) [0] #
RECORD backup in /etc/dumpdates? no +



F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

9.7 restore a File System

# smit -> System Storage Management -> File Systems
-> restore a file system
Restore a File System
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Restore DEVICE [/dev/rmt0] +/
* Target DIRECTORY [.] /
VERBOSE output? yes +
Number of BLOCKS to read in a single input [] #
Operation


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


unit 10 AIX Install

RS/6000에는 크게 두가지 모델로 구별할 수 있는데 그것은 Key가 있는 MCA Classical
RS/6000 모델과 PCI based RS/6000 이다.
각 모델 별로 시스템의 install 과정이 약간의 차이를 보인다.
10.1 RS/6000 install
a 장치의 연결상태를 점검한다.
b Key를 Service 에 놓는다. ( MCA Classical 경우)
c 외부장치의 power를 켠다.
d 에뮬레이터를 active 하게 한다.
e 컴퓨터의 power를 넣는다.
f install media를 넣는다.
g install menu에서 적합한 setting을 해서 install한다.
h install 이 끝난후 Key를 Normal로 한 후 재시동 한다. ( MCA Classical 경우)
I root로 login후 smit상에서 software product를 추가로 install한다.
j 시스템의 환경을 설정한다.
고려해야 하는 환경은 다음과 같다.
· communication
· tty0 , tty1
· time zone
· Primary, secondary Language
· volume group setting
· file system setting
· paging space의 변경
· user가 실행할 수 있는 process의 수

UNIT 10. AIX install AIX Admin교육

--------------------------------------------------------------------------

10.2 Software product install 의 예


System Management
Move cursor to desired item and press Enter.
Software Installation and Maintenance
Software License Management
Devices
System Storage Management (Physical & Logical Storage)
Security & Users
Communications Applications and Services
Print Spooling
Problem Determination
Performance & Resource Scheduling
System Environments
Processes & Subsystems
Remote Customer Support and Services
Applications
AIX System Backup & Recovery/6000
Using SMIT (information only)


F1=Help F2=Refresh F3=Cancel Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


UNIT 10. AIX install AIX Admin교육

--------------------------------------------------------------------------

Software Installation and Maintenance
Move cursor to desired item and press Enter.
Install and Update Software
List Software and Related Information
Software Maintenance and Utilities
Network Installation Management
System Backup Manager

F1=Help F2=Refresh F3=Cancel Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

UNIT 10. AIX install AIX Admin교육

--------------------------------------------------------------------------

Install and Update Software
Move cursor to desired item and press Enter.
Install and Update from LATEST Available Software
Update Installed Software to Latest Level (Update All)
Install and Update Software by Package Name (includes devices and printers)
Install Software Bundle (Easy Install)
Update Software by Fix (APAR)
Install and Update from ALL Available Software

F1=Help F2=Refresh F3=Cancel Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

UNIT 10. AIX install AIX Admin교육

--------------------------------------------------------------------------

Install and Update from LATEST Available Software
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* INPUT device / directory for software /dev/rmt0.1
* SOFTWARE to install [_all_latest] +
PREVIEW only? (install operation will NOT occur) no +
COMMIT software updates? yes +
SAVE replaced files? no +
AUTOMATICALLY install requisite software? yes +
EXTEND file systems if space needed? yes +
OVERWRITE same or newer versions? no +
VERIFY install and check file sizes? no +
Include corresponding LANGUAGE filesets? yes +
DETAILED output? no +

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


UNIT 11. Communication AIX Admin교육

--------------------------------------------------------------------------

11. Communication

11.1 TCP/IP의 개념
· Transmission Control Protocol/Internet Protocol
· 다양한 Type의 네트워크상에서 서로 다른 시스템들이 data를 교환하게 해주는 Software

11.2 TCP/IP의 역사

TCP/IP는 일종의 network 표준으로서 computer communication 방법의 세부사항, network 상호 연결
규정, 경로설정 등을 포함하고 있다. 공식적으로는 TCP/IP internet protocol suite라 부르고, 흔히
TCP/IP라 한다. US. Department of Defense (DOD)는 cost-effective한 Heterogeneous computer간
의 통신을 위한 communication protocol이 필요했고 DARPA(Defense Advanced Research Projects
Agency)의 지원으로 UCLA, UCSB, SRI, Utra Univ등에 의해 1968년에 최초로 ARPANET이 제안 되었
다.

11.3 AIX에서의 IP Setting

* smit -> Communications Applications and Services -> Minimum Configuration & Startup ->
en0,en1,et0,et0 등 Network interface선택


UNIT 11. Communication AIX Admin교육

--------------------------------------------------------------------------

Minimum Configuration & Startup
To Delete existing configuration data, please use Further Configuration menus
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* HOSTNAME [kdcsi1]
* Internet ADDRESS (dotted decimal) [203.225.28.100]
Network MASK (dotted decimal) []
* Network INTERFACE en0
NAMESERVER
Internet ADDRESS (dotted decimal) [203.225.1.11]
DOMAIN Name [kolon.co.kr]
Default GATEWAY Address [203.225.28.254]
(dotted decimal or symbolic name)
Your CABLE Type tp +
START Now yes +

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


11.4 Communication architecture의 비교

OSI
TCP/IP
SNA
7
Application
7
Process/application
------------------
------
Host - Host
7
Transaction Service
6
Presentation
6

6
Presentation Service
5
Session
5

5
Data flow control
4
Transport
4

4
Transmission control
3
Network
3
Internet
Network access

3
Path control
2
Data link
2

2
Data link control
1
Physical
1

1
Physical control



* TCP/IP Protocol Layer
Network access layer - communication node와 attach된 host(혹은 논리적으로 동등한)간의
연결에 관한 protocol.
기능 : 같은 Network내의 host들 사이에 data를 route.
host간의 control, error control 제어.
Internet layer - multiple network상의 host간의 통신을 위한 protocol을 제공한다.
기능: 많은 Network 안에 있는 host사이에 서 data를 route.
주로 host와 gateway 사이에서 이용된다.
Host-Host layer - 서로다른 host상의 process들 간의 data전달을 포함하는 entity
기능 : high level entity간의 logical connection을 제공

11. 5 TCP/IP Command

End user를 위한 TCP/IP Command는 다음의 4개 category로 나늘 수 있다.
File Transfer
ftp , rcp , tftp , utftp
Remote login
telnet , rlogin , rexec , rsh
Status
finger , host , ping , rwho , whois
Remote Communication
mail , talk ( write , wall 은 TCP/IP application이 아님 )
* telnet (tn) - user가 remote host에 login하는 한 방법을 제공한다.
rlogin - telnet과 유사한기능
rsh(remsh) - remote host에서 하나의 특정 명령을 수행, 혹은 rlogin처럼 동작
rexec
ftp - file transper procedure step
a. remote host에 login
b. ftp command 사용 (ls, cd, pwd, get, put, mget, mput, binary)
!command는 logcal host에서 실행
arp - internet address to hardware address translation table을 보여주거나 바꾼다.
gettable - NIC (Network Information Center) format의 host table을 얻는다.
hostid, hostname, host, whois
route - routing table manipulate manually
netstat - routing table과 packet transfer를 보여 준다.
ifconfig - network adaper의 특성을 보여주거나 바꾼다.
figerd - remote daemon provides remote user information
11.6 TCP/IP service를 handle할 수 있는 File들
/etc/rc.tcpip - boot시에 TCP/IP daemon과 subsystem들을 invoke한다.
/etc/tcp.clean - TCP/IP subsystem들을 청소한다.
/etc/rc.nfs - boot시에 rc.tcpip file이 수행된후 실행되어 nfs subsystem과 portmap daemon,
nfsd, biod등을 시작 시킨다.
/etc/services - TCP/IP socket들을 등록하고 있는 file
* System Resource Control (SRC) - process, subsystem, subgroup 등의 자원을 제어
명령 - startsrc, stopsrc, refresh, lssrc

11.7 TCP/IP setting, Name resolusion, Routing, Subnet masking

일반적으로 다음의 6가지 interface가 RS/6000에서 TCP/IP를 지원한다.
(HPS,FDDI도 가능)
Standard Ethernet
en
IEEE 802.3
et
Token-Ring
tr
X.25 Protocol
xt, amp, ampx, sxa
serial Line Internet Protocol or SLIP
si
Loopback
lo
이들 각각의 adapter/interface는 각각의 unique한 주소를 가지고 있다.
이를 Physical Address 혹은 MAC address라 하고 각 vender마다 고유의 range를 가지고 있
다. MAC(Media Access Control)은 6 byte (6 octet) 48-bit로 구성된다.
IP protocol은 TCP/IP internet layer에서만 동작하는데 이를 위한 주소를 Internet Address라
한다. 이는 network address와 host address의 두 부분으로 구성되며 각기 2byte씩, 총 4
byte로 이루어진다. network address 상의 local host 역시 그들 고유의 address를 가지고 있
다.

]