저자 소개 |
Dept. Computer science of Engineering
Moon Jun Hyun
email : imp@bravo.kwangju.ac.kr
ps. 기고를 해주신 Moon Jun Hyun 님께 감사를 드립니다. |
UNIX의 역사 |
- 1960년 대말 AT&T의 Bell 연구소와 MIT 대학 공동으로 Multics 운영체제 개발
- 1969년 Bell 연구소 연구원 Thompson이 Ritchie의 도움으로 파일 유틸리티(cp, mv) 및 Shell 명령어 해석기 개발
- Multics와 유사한 발음으로 UNIX(Brian이 제안)라 명명함
- 1971년 Ritchie가 B를 기초로 프로그램 언어인 C 개발
- 1973년까지 기존의 UNIX를 C로 재작성
- 1970년대 Bell 연구소에서 대학에 UNIX를 저가로 판매
- 이후 여러 연구소와 단체가 UNIX에 중요한 기능을 추가
- HP사와 SUN, DEC 등의 회사가 UNIX 개발에 참여
- 현재 PC 부터 Super-Computer까지 널리 보급됨
|
목차 |
- UNIX 소개
- UNIX 기본
- UNIX 활용
- System Administration
- Boot and Shutdown
- UNIX File System Management
- User and Group Management
- Administration Commands
- Installing Software
- Backups and Restores
- Network Management
|
UNIX 소개 |
- UNIX의 정의
- 컴퓨터에서 프로그램을 실행시키고 자원을 관리하는 운영체제의 일종
주로 대형 서버나 Workstation 에서 사용됨
- System V계열과 BSD계열이 있음
- PC 에서 사용하는 Linux역시 UNIX 계열의 OS임
- UNIX의 특징
- Multi-user : 여러 사용자가 사용 가능하다.
- Multi-tasking : 사용자가 여러 프로그램을 동시 실행 가능하다.
- Multi-choice : 다양한 사용자 인터페이스 지원된다.
- 이식성(Portability)이 좋다.
- 컴퓨팅 환경의 확장이 용이하다.
- UNIX의 역사
- 1960년 대말 AT&T의 Bell 연구소와 MIT 대학 공동으로 Multics 운영체제 개발
- 1969년 Bell 연구소 연구원 Thompson이 Ritchie의 도움으로 파일 유틸리티(cp, mv) 및 Shell 명령어 해석기 개발
- Multics와 유사한 발음으로 UNIX(Brian이 제안)라 명명함
- 1971년 Ritchie가 B를 기초로 프로그램 언어인 C 개발
- 1973년까지 기존의 UNIX를 C로 재작성
- 1970년대 Bell 연구소에서 대학에 UNIX를 저가로 판매
- 이후 여러 연구소와 단체가 UNIX에 중요한 기능을 추가
- HP사와 SUN, DEC 등의 회사가 UNIX 개발에 참여
- 현재 PC 부터 Super-Computer까지 널리 보급됨
|
UNIX의 기본 - login |
- Login
- Consol이나 Terminal을 이용해서 UNIX Server에 접속하는 과정
- UNIX가 Multi-user환경이기 때문에 각각의 사용자들의 정보를 보호하기 위함
- login 과정
- telnet <자신이 접속하고자 하는 서버 이름>
- 예) telnet bravo
- login: <사용자 계정>
- 예) login : imp
- Password: <사용자 계정 비밀번호>
- 예) password : (활성화 되지 않음 )
|
UNIX의 기본 - Shell |
- Shell
- DOS의 command.com과 비슷한 역할
- 프로그램으로 명령을 입력 받아 이를 해석하고 처리해 주는 역할을 수행
- UNIX는 Multi-choice 환경으로 사용자가 선택 가능함
- Shell의 종류
- C Shell - 현재 가장 많이 사용됨
- Bourne Shell - Linux의 기본 Shell
- Korn Shell
- Bourne again Shell
- tcsh
- 자신의 Shell 알아보기
- ps -f
- sh : Bourne Shell
- csh : C Shell
- ksh : Korn Shell
- 사용자 환경 설정 파일(C Shell 인 경우)
- .cshrc : DOS의 config.sys(여러 가지 초기화 명령)와 비슷함
- .login : terminal setup 관련 내용이 들어있음
- .profile : User만의 독특한 설정 파일
- .logout : logout 할 때 행하고자 동작 명시
|
UNIX의 기본 - 환경 설정 |
- 기본적 .login file과 .profile내용
|
UNIX의 기본 - 기본 명령어 |
- passwd (change login passwd)
- 패스워드를 바꾸는 명령
- 영문, 숫자를 섞어서 6~8자 내외
- 첫번째로 숫자나 특수문자가 올 수 없음
- exit, logout
- whoami
- who (who is logged in, what are they doing)
- Username, 접속 방법, login time, 접속 IP Address 등
- id
- user id 와 user가 속한 group id를 알려줌
- cal [month] [year]
- % cal 12 1999 => 1999년 12월 달력을 보여줌
- env
- pwd
- cd (change working directory)
- % cd => user의 Home directory로 이동
- % cd .. => 현재 directory의 상위 directory로 이동
- % cd [directory 경로] => 정해진 directory로 이동
- ls (list contents of directory)
- 현재의 directory 내용을 보여줌(DOS의 dir 명령과 같다)
- 예) % ls [-option] [filename]
- option
- -a : 숨겨진 파일(‘.’으로 시작하는 파일)까지 보여줌
- -l : file에 대한 자세한 내용을 보여줌
- -R : 하위 directory의 내용까지 보여줌
- root directory에서는 사용하지 말 것.
- -s : file의 대략적인 크기를 보여줌
- -t : 최근의 사용순서대로 정렬하여 보여줌
- (최근에 사용한 file을 찾을 때)
- option의 중복 사용 가능
- 예) % ls -alr
- 숨겨진 file 까지 하위 directory의 내용까지 자세하게 보여줌
- date (date) : 시스템의 날짜와 시간의 표시
- 형식 date [MMDDhhmm[YY]]
- 기능
- 시스템의 현재 시간과 날짜를 표시한다. Superuser는 시간과
날짜를 변경시킬 수 있다. +format을 사용하여 date의 출력 형식을 명시할 수 있다.
- option
- a abbreviated weekday-sun to Sat
- h abbreviated month-Jan to Dec
- D date in mm/dd/yy format
- J Julian date (001-366)
- r time in A.M/P.M notation
- T time in HH:MM:SS format
- 예) % date
- Weds May 24 14:23:45 KST 1995
- % date 0524156
- Weds May 24 15:36:00 KST 1995
- % date “ +Date = %D Time = %T”
- Date = 05/26/95 Time = 13:12:07
- time (time) : 커맨드의 실행시간 표시
- 형식 time command
- 기능 command를 실행하고 아래와 같은 실행 시간을 표시함
- real 전체 실행시간의 Total
- user CPU의 활동 시간
- sys 커널의 활동 시간
- 예) % time cc average .c
- 4.3 real 1.2 user 1.4 sys
- touch (change file access and modification times)
- file의 최종 수정시간을 변경시켜줌
- 예) % touch [filename]
- 만약 file name에 해당하는 file이 없는 경우 file 생성
- du (disk usage)
- 현 directory의 하위 directory들이 사용하고 있는 디스크 용량을 보여줌
- option
- -s : 사용 총량만을 알려줌
- -a : 모든 file의 사용량을 알려줌
- df (disk free)
- 디스크의 총량과 사용량 남은 량 들을 알려줌
- -k option 사용 시 킬로바이트 단위로 보여줌
- chmod (change mode) : 파일 액세스 모드의 변경
- 형식 chmod mode files(s)
- 기능 파일의 사용 허가권(모드)를 변경한다.
- option
- access permission
- r read
- w write
- x execute
- l set locking privilege
- s set user or group ID mode
- t set sticky bit(save text) mode
- u user’s current permission
- g group’s current permission
- o other’s current permission
- 예) chmod 644 test
- chmod 755 test
- chmod a+x test
- chmod o-w test
- umask (user mask) : 파일 생성시 허가권 요청에 대한 마스크 설정
- 형식 umank mask
- 기능 파일을 생성할 때 사용자가 요청하는 허가권에 대하여 시스템이 제한을 가하는 make값을 설정한다. 인수를 정하지 않으면 파일 생성 허가권의 현재 값을 표시한다.
- option & mask
- 0 not to restrict any permission
- 1 to restrict execute permission
- 2 to restrict write permission
- 4 to restrict read permission
- 예)
- umask 22 test
- umake 000 test
- chown (change file ownership)
- File의 소유권을 다른 사람에게 넘겨주는 명령
- 예) % chown [소유자] [file name]
- chgrp (change file group ownership)
- File의 소유권을 다른 그룹으로 넘겨주는 명령
- 예) % chgrp [group] [filename or directory]
- cp (copy files)
- File을 복사하는 명령
- 예) % cp [복사할 file name] [복사될 경로]
- cp 명령은 Meta 문자(‘*’, ‘-’)를 사용 가능함
- 예) % cp test* ../
- cat (concatenate and display files)
- File의 내용을 보여주는 명령.
- 별로 크기가 크지 않은 text file을 볼 때 사용
- 예) % cat test.file
- option
- % cat -s test.file : 공백라인을 삭제하고 보여줌
- % cat -n test.file : 화면에 line number를 붙여줌
- mv (move file)
- File을 옮기는 명령, 사용법은 cp와 같음.
- Mv 명령으로 file명을 바꿀 수 있음
- 예) % mv test.file test.test
- rm (remove)
- File을 지우는 명령
- 예) % rm test*
- rm -r option은 아주 강력하고도 위험한 명령임.
- mkdir (make directory)
- rmdir (remove directory)
- chsh (change shell)
- 자신의 shell을 바꾸는 명령. 이 명령이 없는 경우도 있음.
- ‘sh’는 bourn shell, ‘ksh’은 korn shell, ‘csh’ 은 C shell로 바꿈
- file (determine file type)
- File의 종류가 무엇인지를 알려줍니다.
- 예) % file [filename]
- head (display first few lines of files)
- File의 처음 몇 개의 행을 보여주는 명령
- 예) % head [-n] [filename] -> ‘n’개의 line을 보여줌
- tail (deliver the last part of a file)
- File의 끝부터 몇 개의 행을 보여주는 명령
- 예) % tail [-n] [filename]
- cat (concatenate and display files)
- File의 내용을 보여주는 명령.
- 별로 크기가 크지 않은 text file을 볼 때 사용
- 예) % cat test.file
- option
- % cat -s test.file : 공백라인을 삭제하고 보여줌
- % cat -n test.file : 화면에 line number를 붙여줌
- more (browse or page through a text file)
- File의 내용을 볼 때 사용하는 명령. File의 내용을 한 화면씩 보여줌. 스페이스바를 누르면 다음 화면이 스크롤 됨.
- 예) % more [option] [filename]
- option
- -s : 공백 line을 제거하고 보여줌
- +n : ‘n’ line부터 보여줌
- +/문자열 : 그 문자열이 있는 곳부터 보여줌
- q : 종료
- v : 현재 line에서 vi 편집기를 시작함
- = : 현재의 line number를 알려줌
- Ctrl-B : 한 화면 전으로 스크롤 됨
- pg (files perusal filter for CRTs)
- more와 비슷한 기능을 제공. 이전 화면을 볼 수 있는 기능
- Enter키를 누르면 다음 화면을 보여줌
- 예) % pg [option] [filename]
- option
- -s : 공벽 line 제거
- +n : n번 line부터 보여줌
- +/문자열 : 그 문자열이 있는 위치부터 보여줌
- nl : n번 line을 보여줌
- +nl : 현재부터 n행 후의 내용을 보여줌
- -nl : n행 이전의 내용을 보여줌
- /문자열 : 문자열 검색
- // : 반복되는 패턴 검색
- . : 현재 화면 재 출력
- v : vi 편집기 실행
|
UNIX의 기본 - redirection & pipe |
- redirection
- pipe
- 출력 방향 변경 (‘>’)
- 우선 file을 생성. ‘%’은 프롬프트임.
- % touch test : 빈 file 생성
- % cat test : 아무것도 나타나지 않음
- % ls -al > test : 화면상엔 변화가 없음
- % cat test : --
- uniq (report or filter out repeated lines in a file)
- 중복된 line, 공백 들을 제거하고 출력하는 명령
- option
- -d : 반복되는 line만 출력
- -c : 중복된 횟수만 출력
- -u : 반복되지 않은 line만 출력
- % cat >> test
- Hello
- Enter
- Enter
- ^Ctrl-D
- % cat test
- % uniq test
- 출력 방향 변경 추가 (‘>>’)
- % ls -al >> test : 역시 화면 변화 없음
- % cat test : test file에 내용 추가됨
- % rm test* : test로 시작하는 모든 파일 지움
- cat을 이용 edit하는 방법
- % cat > test
- 이것은 test입니다. : 문자열 입력후 enter
- ^Ctrl-D
- % cat test : ??
- cat을 이용한 문자열 추가 방법
- % cat >> test
- 이번엔 추가입니다. : 문자열 입력후 enter
- ^Ctrl-D
- % cat test : 내용이 추가됨
- 입력 방향 변경 (‘<‘)
- wc(display a count of lines, words and characters in a file)
File안의 line수와 단어 수 그리고 문자의 수를 세를 명령
- option : -l : line 수 -w : 단어의수 -c : 문자의 수
- % wc test
- % wc < test
- % cat test | wc : 모든 line, 단어, 문자의 수가 출력됨
- Pipe : 파이프
- Pipe는 명령의 출력을 다른 명령으로 연결할 때에 사용됨
- % who > wc -l
- % ls -al
- % who | wc -l
- uniq (report or filter out repeated lines in a file)
- 중복된 line, 공백 들을 제거하고 출력하는 명령
- option
- -d : 반복되는 line만 출력
- -c : 중복된 횟수만 출력
- -u : 반복되지 않은 line만 출력
- % cat >> test
Hello Enter Enter ^Ctrl-D
- % cat test
- % uniq test
|
UNIX의 기본 - Meta Characters |
- Meta Charcters
- 다른 문자와는 다르게 독립적으로 다른 의미를 가지고 사용되는 문자
대표적 Meta Charcters
- * ? [ ] : Wild card charcters
- > >> < | : Redirection charcters
- & : Background job charcters
- $ : Shell 변수의 값을 이용할 때
- % ls t* : ‘t’로 시작되는 모든 문자와 대체됨
- % ls t? : ‘t’로 시작되는 두문자와 대체됨( ?가 하나의 문자 )
- [a-r] : a에서 r까지의 문자와 대체됨
- % game & : game을 백그라운드로 실행함
- % echo $path : 환경변수 path의 값을 보여줌
|
UNIX의 기본 - 추가 명령어 |
- man (find and display reference manual pages)
- 각 명령어에 대한 online 도움말을 제공함
- 예) man [명령어]
- 이 명령은 자동으로 ‘more’명령을 수행한다.
- sort (sort, merge, or sequence check text file)
- 정보를 지정한 방식으로 정렬해 주는 명령
- 예) sort [filename]
- option
- -d : 사전식 정렬
- -f : 대문자를 소문자로 간주
- -n : 숫자로 정렬
- -r : 역순 정렬
- +m : m번째 필드로 정렬한다.
- % sort test
- % cat test
- % ls -al | sort -f : 알파벳순 정렬
- % ls -s |sort -n : 크기순 정렬
- ls -s | sort -n > list : list라는 정렬된 file 생성
- spell
- 철자 검사를 하는 명령(대부분 소형 시스템에서는 사용 안함)
- nl (line numbering filter)
- line 번호를 붙여주는 명령 = cat -n 과 같은 기능
- 예) nl [filename]
- % nl test
- %cat -n test : 두 명령이 같은 결과를 냄
- % ls -al | nl
- option
- -ba : 공백에도 번호를 붙임
- -bp문자 : 문자가 있는 line만 번호를 붙임
- -s문자 : 번호와 line을 지정한 문자로 분리해 줌
- % ls -al > test
- % echo ” ” >> test
- % echo ” ” >> test
- % ls -al >> test
- % nl test
- % nl -ba test
- % nl -bptest test
- % nl test -s번째
- banner (make posters)
- 입력한 문자를 banner style로 찍어준다.
- 예) % banner Good-morning!
- bc (arbitrary precision arithmetic laguage)
|
UNIX의 기본 - 압축 명령어 |
- tar (crete tape archives, and add or extract files)
- File을 묶어주는 명령(압축은 하지 않음)
- File을 묶을 때
- % tar cvf [만들 filename.tar] [압축하고자 하는 대상]
- File을 풀 때
- % tar xvf [풀고자 하는 filename] [풀어놀 ditectory]
- File을 풀지 않고 내용만 보고자 할 때
- % tar tvf [보고자 하는 filename]
- compress
- File 압축 명령
- 예) % compress [filename] : filename.Z가 생성됨
- % compress temp.tar : temp.tar.Z라는 file이 생성됨
- option
- -v : 압축률을 보여줌
- 예) % compress -v temp.tar
- uncompress
- File 압축 해제 명령
- 예) uncompress [압축된 filename] : 원래의 file이 됨.
- find (find files)
- 찾고자 하는 file의 위치를 알려주는 명령
- 예) find [path] [-option] [pattern]
- option
- -atime [n] : file이 n일 전에 touch(접근)되었으면 ‘true’
- -ctime [n] : file이 n일 전에 생성되었으면 ‘true’
- -exec [command] : 명령을 실행
- -mtime [n] : file이 n일 전에 수정되었으면 ‘true’
- -name [pattern] : 패턴에 맞는 file명이면 ‘true’
- -type [file 종류] : file이 종류가 맞으면 ‘true’
- ‘d’ : directory, ‘f’ : file, ‘l’ : link
- -user [name] : file의 사용자가 name이면 ‘true’
- 예) % find . -name “*.c” : 현재 디렉토리 밑에 .c로 끝나는 file 검색
% find /usr1 -user “imp” : file의 소유자가 imp인 모든 file 검색 |
UNIX의 기본 - 정보 검색 명령 |
- grep (search a file for a pattern)
- File 내에서 정보를 검색하는 명령
- 예) % grep [flag] [pattern] [filename]
- option
- -c : 일치되는 라인의 수만을 출력
- -i : 패턴에서 대소문자 구별 무시
- -l : 패턴에 일치하는 file의 filename만 출력
- -n : line 번호 포함
- 검색의 예
- % grep imp /etc/passwd : /etc/passwd file에서 imp라는 문자를 검색
- % grep csh /etc/passwd | wc -l
- /etc/passwd file에서 C Shell을 쓰는 사용자수 검색
- echo (echo argument)
- 입력된 명령을 반향(반복)한다.
- 예) % echo [문자열]
- % echo * : ls와 같은 기능을 함. ‘*’는 임의의 문자를 의미
- % echo ? : ls ? 와 같음 ‘?’는 한 문자를 의미
- % echo t* : t로 시작하는 모든 문자열
- << (hear current)
- <<는 >>와 같은 흐름 재지정 명령(Redirection)이다.
- <<는 입력을 모사(simulate)하는데 쓰인다.
- 사용 예
- sed (stream editor)
- sed는 파이프라인의 정보의 흐름을 편집하는 명령이다.
- 예) sed ‘s/피대체어/대체어/플래그’
- 대표적인 플래그는
- g : line의 모든 패턴을 대체함. ‘g’를 쓰지 않으면 한 line에서 하나만을 대체한다.
- ‘;’ : 여러 sed명령을 함께 실행할 수 있다.
- % who : 이 화면 출력과 다음의 화면 출력을 비교해 보시오.
- % who | sed ‘s/pts/Device/’
- % more /etc/passwd
- % more /etc/passwd | sed ‘s/:/-/g
- awk (pattern scanning and processing language)
- 단어 중심으로 text를 분석하는 명령. UNIX에서 가장 강력한 filter중 하나
- awk는 입력되는 정보를 필드로 나누어 받아들입니다. 필드는 ‘$n’으로 구분함
- 예) % awk ‘[command]’ : 가장 일반적 명령은 print임
- % awk ‘[command]’ [filename]
- % who | awk ‘{print $1}’
- % who | awk ‘{print “ user ” $1 “ is on terminal ” $2}’
- Flag
- -f : 명령의 세부 사항을 file로부터 읽음
- -F문자 : 입력되는 정보의 필드구분자로서 ‘문자’를 쓴다는 것임
- % awk -F : ‘{print $7}’/etc/passwd | sort | uniq -c : -c는 중복된 수
- $0는 line전체를 가르킴
- 사용 가능한 특수문자
- “\t” : tab
- “\n” : 개행 문자
- 예) % ls -lF | awk ‘{print $5 “\t” $9}’
- awk 프로그램은 language처럼 변수의 사용이 가능함
- % ls -l | awk ‘{total = total+$5; print total “\t” $9}’
- % ls -l | awk ‘{total += $5; print total “\t” $9}’
- Awk에서 사용되는 유용한 변수
- NF : number of filed의 뜻으로 마지막 필드의 수를 알 수 있음
- NR : ordinal number the current record의 뜻으로 행의 수와 같음
- % awk -F ‘{print $NF}’ /etc/passwd | sort | uniq -c
- % ls -l | awk ‘{print NR “:” $0}’
- tee (replicate the standard output)
- 정보의 흐름을 복사하는 명령. 정보의 흐름을 둘로 쪼개는 것
- option
- -a : file에 덮어쓰지 않고 첨가하라는 명령
- % who | tee who.out : 화면에 who 의 출력도 나오고 who.out이란 file에 출력의 내용이 저장됨
- 와일드 카드 ‘[ ]’ 를 써서 문자의 영역 지정 가능
- % ls -l a* b* c* d*
- % ls -l [abcd]*
- % ls -l [a-d]*
- % ls -l [d-f m .]* : d에서 f, m, 도는 ‘.’로 시작하는 file 검색
- whereis (location the binary, source, and manual page file for a command)
- 시스템 경로상의 어디에 위치하는가를 알려주는 명령
- 예) whereis [찾을 filename]
- % whereis mkdir
- mkdir: /usr/bin/mkdir /usr/man/man1/mkdir.1 /usr/man/man2/mkdir.2
|
UNIX의 기본 - 작업 제어 명령 |
- Process
- UNIX에서 실행 중인 모든 프로그램
- UNIX는 여러 개의 Process가 동시에 수행 가능함
- OS차원의 Process scheduling을 지원함
- 각 Process는 Process ID(PID)를 가지고 있고, 또 상태를 가지고 있음
- UNIX의 Process는 계층적 구조를 가지고 있음
- 현재 사용되는 있는 Process는 Foreground라고 하고 잠시 중단되거나 뒤편으로 넘겨논 상태
- 의 모드를 Background라고 함
- 예) % man fg : fg에 대한 매뉴얼 페이지를 보여주는 명령
Ctrl-Z : 작업 중단 % jobs : 현재의 백그라운드 작업 내용을 보여주는 명령 [1] +중단됨(사용자) man fg % fg : 다시 Foreground로 작업이 넘어옴
- ^Ctrl-Z를 누름으로써 작업을 백그라운드로 전환할 수 있다.
- jobs명령으로 작업의 내용을 볼 수 있음
- fg명령으로 다시 Foreground로 다시 작업을 전환할 수 있음
- 사용자의 입력을 요하거나 화면에 출력을 해야 하는 Process들은 Background에서는 실행이 중지됨
- 사용자의 입력이 필요 없는 경우나 잠시 실행을 중지시킬 때 Background로 Process를 실행시켜야 함
- Background에서 중지되어 있는 명령 Background에서 실행시키려면 bg명령을 줌
- 프로그램을 Background로 바로 보낼 때는 명령의 끝에 ‘&’를 줌
- 예) % find / -name “*text*” > test.bg & : text라는 문자열이 들어간 모든 file을 찾아 test.bg에 넣는다.
- fg
- Background의 Process를 Foreground로 실행함
- 예) % fg %[작업ID] : 작업 ID는 jobs를 실행했을 때 제일 앞에 나오는 수
- bg
- Background의 중지된 Process를 실행시킴
- 예) % bg %[작업ID]
- jobs
- ps (report process stastus)
- Process의 상태를 보여주는 명령
- option
- -a : 현재의 터미널과 연관된 모든 Process를 보여줌
- -A : 현재 시스템의 모든 Process를 보여줌
- -e : 현재 실행중인 모든 Process를 보여줌
- -l : 자세한 Process의 정보를 보여줌
- kill (terminate or signal processes)
- Process를 강제 종료시키는 명령
- 예) % kill [-signal] [PID] [&JOB ID]
- signal
|
UNIX의 활용 - VI Editor |
- VI
- Terminal 설정
- % vi 라고 입력했을 때 에러(error)가 나는 경우
- csh(C Shell) : .login file에 setenv TERM vt100
- sh(Bourne Shell) : .profile file에 TERM=vt100; export TERM
- Mode
- 명령 모드 : 명령을 입력할 수 있는 모드
- 입력 모드 : ‘I’를 입력하여 입력이 가능한 모드
- vi를 이용한 문서 작성
- 커서의 이동
- 문자 단위의 이동
- 대부분의 터미널에서는 화살표키로 이동 가능
- 만약 화살표카가 지원되지 않는 경우는 다음의 키를 이용
- 줄단위의 이동
- n : 현재 행으로부터 n번째 행으로 이동
- + : 다음 행의 처음으로 이동
- - : 이전 행의 처음으로 이동
- 단어, 문장 절 단위이동
- f 문자 : 다음에 나타나는 “문자”로 이동
- F 문자 : 이전에 나타나는 “문자”로 이동
- ( : 문장의 처음으로 이동
- ) : 문장의 끝으로 이동
- ; : 같은 방향으로 다음 “문자”로 이동
- { : 커서가 인접한 패러그래프의 시작위치로 이동
- } : 커서가 인접한 이전 패러그래프의 시작위치로 이동
- 화면 단위 이동
- ^B : 이전 화면으로 이동
- ^F : 다음 화면으로 이동
- ^U : 반화면 앞으로 이동
- ^D : 반화면 뒤로 이동
- z :커서의 위치를 화면의 Top으로 스크롤
- z. : 커서의 위치를 화면의 중앙으로 스크롤
- z- : 커서의 위치를 화면의 bottom으로 스크롤
- ^L : 화면의 재 출력
- 삽입과 지우기, 복구, 교체
- 삽입
- i : 현재 커서의 위치부터 삽입
- a : 현재 커서의 위치 다음부터 추가 시작
- A : 현재 줄의 마지막에 추가 시작
- I : 현재 줄의 처음에 추가 시작
- o : 현재 라인의 아래에 새로운 라인을 열어준다.
- O : 현재 라인의 위에 새로운 라인을 열어준다.
- 지우기
- x : 커서 위치의 한 문자를 지운다.
- X : 커서 이전의 한 문자를 지운다.
- dd : 현재의 행을 지운다.
- ndd : n개의 라인을 지운다.
- dG : 현재 행부터 file의 끝까지 지운다
- d0(숫자 0) : 행의 시작부터 현재 앞 문자까지 지운다.
- d1G : 현재 행부터 file의 시작까지 지운다.
- dnG : 현재 행에서 n번째까지 지운다.
- 복구
- p : 버퍼의 내용을 현재 줄 이전에 복구한다.
- P : 버퍼의 내용을 현재 줄 다음에 복구한다.
- VI -r [작업하던 file name] : 시스템이 갑자기 꺼졌을 때 복구 명령
- 교체
- cw : 현재 위치에서 단어 교체
- cfc : 현재 위치에서 'c' 문자까지 변경
- ' . ' : VI에서 마지막 명령을 반복하라는 뜻이다.
- 검색 치환
- 검색
- /문자열 : 문자열을 앞으로 검색한다.
- ?문자열 : 문자열을 뒤로 검색한다.
- 치환
- 블록 명령
- 블록을 file에 저장, 첨가
- 명령모드 ":" 프롬프트 상에서
- : 10,20w [file name] : 블록을 file에 저장
- : 10,20w >> [file name] : 블록을 file에 추가
- 블록 읽어 오기
- : 10,20r [file name] : 10에서 20까지에 file을 읽어 현재 줄에 삽입
- 블록 자르기
- 여러분이 수정을 하거나 삭제를 하면 버퍼에 그 내용을 복사를 합니다. 여기서 필요한 부분을 버퍼에 복사하는 것을 yank 라 합니다. 이 내용을 나중에 다시 불러와서 사용할 수 있습니다.
- buffer에도 이름을 부여하여 블록을 저장할 수 있습니다. ( " 사용)
- "name5dd : 현재 줄에서 5줄을 삭제하고 name으로(여러분이 부여한) 버퍼에 기록
- 블록 복사
- yw : 한 단어 버퍼에 기록
- y$ : 줄의 끝까지 기록
- yy : 현재 줄을 버퍼에 기록
- 역시 name을 주어 buffer에 기록 할 수 있다.
- 블록 붙이기
- 커서를 원하는 곳으로 이동한 후
- p : 현재 커서 위치 오른쪽에 추가한다.
- P : 현재 커서 위치 왼쪽에 추가한다.
- namep : buffer에 있는 name의 블록을 현재 위치에 추가
- 다른 file 편집
- % vi file file file file ......
- 다른 file로 이동할 때는 : 프롬프트 상에서 :n 이라 입력한다.
- : shell 이라 치면 VI를 종료하지 않고 shell 화면으로 나갈 수 있다.
- 다시 VI로 이동할 때는 exit라 입력한다.
- VI 환경 설정
- VI에도 환경을 설정할 수 있습니다.
- Vi 상태에서 :set all을 입력하면 현재 사용중인 VI의 옵션 지정상태를 볼 수 있습니다.
- 이러한 옵션은 여러분의 HOME DIRECTORY에 .exrc란 file에 지정하지 않으면 디폴트값을 사용합니다.
- 다음은 현재 저자의 .exrc 의 내용입니다.
- VI 중요한 옵션
옵션 |
약자 |
Default Value |
의미 |
autoindent |
ai |
noai |
자동 들여쓰기, 즉 바로 전의 행과 시작을 같이함 |
ignorecase |
ic |
noic |
탐색에 있어 대소문자를 구별하지 않음 |
magic |
|
magic |
* [ ~ 등을 탐색 또는 정규 표현식의 와일드 카드로 또는 메타문자로 사용 |
numver |
nu |
nonu |
에디터 각 행에 행번호가 매겨짐 |
redraw |
|
noredraw |
각 문자를 항상 알맞은 위치에 나타내 줌 noredraw은 1200보울 이하의 느린 터미널에 쓰임 |
tabstap |
ts |
ts=8 |
Tab키 또는 Ctrl-I에 대응되는 공백의 개수 저장 |
wrapscan |
ws |
ws |
/ 또는 ? 연산자로 탐색을 하는 경우 사용됨 |
wrapmargin |
wm |
ws=0 |
오른쪽 여백의 크기를지정 | |
UNIX의 활용 - 자신의 환경 만들기 |
- History
- C shell 과 Korn shell은 여러분이 입력함에 따라 명령표를 만들어내고 각각에 명령 번호를 지정한다.
- C shell : C shell은 default로 지난번 로그인의 마지막 명령만을 기억하고 있다.
- 명령들의 목록을 작성하기 위해서는 set history=n 이라는 환경을 설정해야 한다.
- 예) % set history=50 : 50개의 이전 명령 기억(화면에 변화 없음)
- % set
- 항상 로그인 했을 때 이 history 기능을 사용하려면
- 환경 설정 file .cshrc에 set history=50 이란 내용을 추가
- C Shell의 history 명령 사용법
명령 |
기능 |
!! |
이전의 명령 반복 |
!$ |
이전 명령의 마지막 단어를 반복 |
!* |
이전의 명령의 첫번째 단어를 제외한 모든 단어를 반복 |
^a^b |
이전 명령에서 a를 b로 대체 |
!n |
History 목록에서 번호 n의 명령을 반복 |
- Alias
- 축약어. 긴 명령을 alias명령을 이용하여 쉽게 타이핑 할 수 있음
- 이 축약어 역시 여러분이 계속 사용하고 싶다면 .cshrc file 안에 넣어 두면 됩니다.
- 사용법 : alias [새로운 alias명] [축약할 명령어]
- Shell 변수
- shell에는 각각의 shell이 사용하는 shell 변수가 있음
- C shell에는 두 가지 종류의 shell 변수가 있습니다.
- 일반 shell 변수 : set 명령을 사용하여 생성하고 새로운 shell(서브 shell)을 시작하면 인식할 수 없음
- 환경 shell 변수 : setenv 명령을 사용하여 생성하고 새로운 shell(서브 shell)에서도 인식가능함
- 일반 변수는 프롬프트 상에서 set 명령을 그리고 환경 shell 변수는 setenv 명령을 내리면 알 수 있습니다.
- 그리고 shell 변수명을 지정할 때 일반 shell 변수는 알파벳 소문자를 그리고 환경 shell 변수명을 지정할 때는 대문자를 사용하는 것이 BSD 계열의 Unix의 전통이다
- 환경 shell 변수는 서브 shell에서도 인식이 되므로 보통 .login file에 저장합니다.
- 환경 변수 값 알아보기
- 일반 shell 변수 값 지정
- 보통 값을 지정할 때 "="기호 사이에 빈칸이 포함되어서는 안되나 ' 기호나 " 기호를 사용하면 가능하다.
- 환경 shell 변수 값 지정
- % setenv 변수명 값 : "=" 기호를 사용하지 않는다.
- shell 변수 제거
- % unset 변수명
- % unsetenv 변수명
- Default Shell 변수
변수 |
설명 |
HOME |
사용자의 홈 디렉토리. 아무런 디렉토리 지정없이 cd명령을 수행했을 때 이동되는 디렉토리 |
SHELL |
사용자가 사용하는 Shell. VI같은 프로그램에서 Shell로 잠시 빠져 나갈 때 생성하는 새로운 Shell이 바로 이 SHELL이다. |
TERM |
터미널에 관련된 값. DEC사의 Visual Terminal Model 100이 표준임 |
USER |
UID와 계정이름을 확인할 때 사용하는 사용자 이름 |
MAIL |
편지가 Default로 들어가게 되는 우편함의 위치 |
LONGNAME |
USER의 Full Name |
PATH |
사용자가 명령을 입력했을 때 검색할 디렉토리와 순서 정의 |
NAME |
사용자의 전체이름. 전자우편과 인쇄용 프로그램들은 사용자의 전체이름이 필요할 때가 있음. 이 때 이 정보가 사용됨 |
- Shell Script
- Unix 표준 명령어를 조합하여 새로운 명령어를 만들 수 있도록 shell의 기능을 활용할 수 있음
- shell은 Unix 프로그램과 마찬가지로 file로부터 명령을 입력받을 수 있다. 이런 Unix 명령들로 구성된 file을 Shell Script라 함.
- shell script는 Unix의 명령어들을 기록한 파일로 이루어진다.
- shell script는 sh 'file name' 으로 실행된다.
- shell script가 기록된 file을 Unix 명령어처럼 직접 실행할 수 있도록 하려면 chmod 명령으로 실행 권한을 부여하면 된다.
- C shell은 sh(bourn shell)의 script도 실행할 수 있고 C shell의 script 언어를 이용한 script 명령을 실행할 수 있다.
- Shell script 예제
- 다음을 입력한 file을 만들고 chmod 명령으로 실행권한을 부여하여 실행시켜보십시오.
- .cshrc에 다음의 내용을 적어주면
- 파일 이름의 전체를 입력하지 않아도 인식가능한 곳까지만 타이핑해도 shell 자체에서 file name을 결정해 준다.
|
UNIX의 활용 - Communication |
- tty : 어떤 디바이스를 통해 연결되었는가를 알기 위해서 사용.
- tty 디바이스는 하나의 Unix file 이다.
- Write
- 다른 사람(같은 서버 사용자)과 메시지를 주고받을 수 있도록 명령입니다.
- 예) write [응답할 사용자 ID]
- 만약 당신이 write imp 이라고 했다면 imp 사용자의 화면에는 다음의 내용이 표시된다.
- 이때 통신 예의는 imp가 응답하기 전까지는 먼저 메시지를 보내서는 안된다는 것이다.
imp가 응답을 하면 그때부터 서로 메시지를 주고받으면 된다.
- 종료는 ctrl-D를 누르시면 됩니다
- mesg : 상대방의 메시지를 수신 할 것인가 안 할 것인가를 결정.
- mesg y : 메시지 수신 허가
- mesg n : 메시지 수신 불허
- Mail
- Unix의 모든 기능중 가장 인기 있는 것 중의 하나
- 메일 프로그램은 여러 가지가 있음
- mail 그리고 SVR4 이후에 mailx 라고 불리는 것이 있음
- mailx는 Berkeley mail이라고도 불림
- 여러분이 만일 이미 메일을 받았을 때 mailx를 실행시키면 다음과 같은 내용이 출력된다.
- 메시지를 일기 위해서는 읽고자하는 색인번호 입력
- 메시지 작성의 종료 : ^Ctrl-D나 ‘.’를 새로운 라인에서 입력
- Mailx의 대부분의 명령은 첫글지만 입력하여 실행 가능.
- mail 보내기
|
System Administraion |
- 시스템 관리
- 시스템 관리자가 UNIX System이 원할하게 작동되도록 하기 위해서 UNIX System상에서 수행하는 모든 관리작업들
- 전반적인 시스템 관리자의 책임 작업들
- 시스템 구성과 관련되는 작업
- 커널의 구성
- 주변장치의 구성과 설치
- 새로운 소프트웨어 설치
- 파일 시스템 관리
- 파일 시스템의 무결성 유지 보수
- 디스크의 사용도 점검
- 디스크 공간의 배정
- 파일 시스템의 생성, mount, unmount
- 반복적인 작업의 자동화
- 사용자 계정(account)의 관리
- /etc/passwd 파일에 새로운 사용자 추가
- /etc/group 파일에 새로운 그룹 추가
- 사용자를 위한 홈 디렉토리의 생성
- 사용자를 위한 start-up의 작성
- 시스템 운영에 대한 평가
- /usr/adm/acct 파일에 의한 시스템 사용도 평가
- /usr/adm/wtmp 파일에 대한 로그인 정보의 추적
- 프린터 사용도 추적
- log파일의 생성과 추적 평가
- 시스템 보안 관리
- 중요 데이터의 2차 보전
- 해커(hacker)들로부터의 시스템 침입에 대한 대비
- 시스템 장애시의 비상 대책 수립
- 시스템 특권 사용자
- Superuser
- 대부분의 시스템 관리 작업들은 시스템 전반에 관하여 중대한 영향을 미치는 정보에의 접근을 의미하므로 superuser의 권한이 필요함
- Superuser의 권한을 얻는 방법
- 사용자가 시스템 콘솔(console)에서 시스템의 가동을 시작하여 단일 사용자 모드(single user mode)로 선택하면 자동적으로 superuser로서 login된다. 단일 사용자 모드에서는 root로만 login할 수 있다
- Superuser의 ID인 root를 사용하여 login하는 방법
- 일반 사용자로 login한 상태에서 su command를 사용하는 방법
- 시스템의 안전을 위해서 su command를 사용하는 것이 바람직하다.
- 어느 방법을 사용하든지 간에 superuser의 비밀번호를 요청한다.
- 올바른 비밀번호를 입력하면 superuser 특권으로 수행되고 있음을 의미하는 프롬프트 #를 출력한다.
- Superuer 특권이 요청되는 작업을 마치면 Ctrl-D를 입력해서 종료한다.
- su (substitute user/supeuser) : 새로운 사용자로 임시 교체
- 형식 su [option] [user]
- 기능
- 시스템 상에서 임시로 다른 사용자가 될 수 있도록 함으로써 다른 사용자의 화일들을 액세스할 수 있도록 한다.
- 인수를 지정하지 않으면 root(superuser)로 가정한다.
- option
- - 완전한 다른 사용자로 로그인한다.
- -c command 새로운 사용자로서 로그인한 후에 수행할 명령 지정
- 예
% su - |
super user로 로그인 |
password |
비밀번호 입력 |
# |
root로 로그인한 결과 |
$su - imp |
imp란 사용자로 로그인 |
- Superuser로 가능한 작업
- 시스템의 시동 및 종료
- 사용자 계정의 관리
- 시스템 clock의 설정
- 자원 사용의 제한에 대한 확장과 프로세스의 우선순의 결정
- 파일 소유자 변경
- 파일 시스템의 생성, 점검, 보수
- 파일 시스템의 mounting과 unmounting
- 장치 화일의 생성
- 시스템의 backup과 복구
- crontab 파일의 조작
- 그 밖의 특권 사용자
- bin : system command의 소유자
- Bin은 superuser에 비교해 별다른 특권은 없지만 /bin, /usr/bin의 모든 프로그램과 장치화일을 소유한다.
- 일반적인 시스템 소유의 화일들은 root또는 bin으로 되어있다.
- root대신에 bin으로 로그인하는 이유는 만약에 발생할 지 모르는 실수에 대비하기 위함이다.
- daemon : 비특권 프로그램의 소유자
- daemon은 보통 UID 1을 갖는다
- 화일들 중에는 어떤 특정한 사용자에 속하기 보다는 적절하게 UNIX에 속해야만 하는 것들이 있는데 이런한 화일을 바로 daemon이 소유하게 된다.
- 그 이유는 root의 소유로 인하여 발생할 수 있는 보안상의 장애를 피하기 위함이다.
- 비슷한 이유로 UNIX 그룹인 daemon이 생성되어 있다.
- sys : kernel과 메모리 image들이 소유자
- 시스템에 따라서는 kernel의 주소공간(/dev/kmem), 시스템 실 메모리(/dev/mem), 시스템 swap 공간의 iamge(/dev/swap)와 같은 특수화일들은 sys사용가가 소유한다.
- 어떤 시스템에서는 sys 대신에 그룹 kernel이 사용된다.
- nobody : 무소유의 소유자
- 대부분의 UNIX는 UID -1 또는 -2로 정의한다.
- nobody는 특별한 허가권을 가져서는 않되거나 필요치 않는 프로그램의 소유자이다.
- NFS(Network File System)는 네트워크 상의 source 파일 server들에게 이것을 사용한다.
- 여기서는 diskless client들은 단일 사용자 모드에서 어느 누구에게 의해서도 reboot되어질 수 있다.
|
Boot and Shutdown |
- 시스템 부팅 순서 (예 : Solaris 2.x)
- Boot PROM 단계
- System identification banner 표시
- System 의 model, keyboard, host ID, PROM version, Ethernet address를 표시
- Self-test diagnostics의 실행
- Boot PROM의 자기 진단 Program이 System의 Hardware와 memory 확인함
- 자가 진단을 성공적으로 마쳐야만 다음 Boot과정을 실행함
- PROM에 정의된 Boot장치에서 Boot program을 찾음
- Boot program은 UFS Filesystem reader를 포함하고 있는 System 첫번째 Boot program인 Boot block(1-15 sector에 위치함)을 읽는다.(Boot PROM 내의 Boot 장치는 변경시킬 수 있음)
- Boot program load
- Filesystem reader는 Boot 장치를 열고 두번째 Boot program인 /ufsboot를 memory에 load한다.
- /ufsboot program을 load한 후 Boot PROM은 Kernel(/kernel/unix)을 load함
- Kernel 초기화 단계
- Kernel은 스스로 초기화 한 후 /ufsboot program을 이용하여 module들을 load함
- Kernel이 Root partition을 mount 하는 데 필요한 module을 읽고나면 /ufsboot program은 momory에서 제거되고, 계속해서 Kernel이 자원을 이용하여 초기화한다.
- /sbin/init 단계
- Kernel이 사용자 프로세스를 생성하며 /sbin/init program을 실행시킨다.
- /sbin/init program은 /etc/inittab file에 기록된 내용을 실행함
- Init process는 하나의 rc script 또는 실행 가능한 다른 script 들을 차례로 실행시킨다.
- 이러한 script(/sbin/rc*)들은 Filesystem을 Check하고 mount하며, 여러 process들을 기동시킨다.
- System Init State(Run Level)
- Solaris는 다음과 같이 8개의 Run level이 존재함
- Run level : 선택된 프로세스 그룹하에서 실행하도록 하여진 소프트웨어 구성을 말함.
- 현재 자신의 Run level이 몇인지 알고자 할 경우 사용하는 명령
- % who -r
- Solaris와 Linux의 Run level 비교
Run State |
Solaris 2.x Action |
Linux Action |
s,S |
Single user mode |
|
0 |
PROM Monitor level |
Halt (Do Not set initdefault to this) |
1 |
Single user mode : root & user mounted |
Single user mode |
2 |
Multi user mode : No Resources exported |
Multi user mode : Without NFS and Networking |
3 |
Multi user mode : Machine Resource exported |
Full Multi user mode |
4 |
Not Currently used |
Not Currently used |
5 |
PROM Monitor level(Power off) |
X11 (X-Window Start mode) |
6 |
Halt and reboot to default state |
Reboot (Do Not set initdefault to this) |
- Shutdown
- SunOS 5.x, Solaris 등의 UNIX System은 여러 프로그램은 계속해서 Running하기 위해 설계되었음
- 다음과 같은 경우에은 반드시 시스템을 halt하거나 shutdown시켜야 함
- Turning off system power
- Installing a new release of the operating system
- Anticipating a power outage
- Adding hardware to the system
- Performing maintenance on a file system
- Shutdown 시키는 방법
- % shutdown -y -i[바꾸고자 하는 run level] ?g[대기시간]
- % shutdown -y -i5 -g5 : 5분 후에 시스템을 power off 하고자 할 때
- % shutdown -y -i6 -g0 : 곧바로 시스템을 리부팅하고자 할 때
- Run Level Change
- Run level은 telinit 명령이나 init명령으로 바꿀 수 있다.
- Shutdown the system
- Single-user state
- Multi-user state
- Shutdown and Reboot
※ 많은 사용자가 log-in 하고 있을 때 갑자기 run level을 바꾸면 File system의 손상을 가져올 수 있다. (STOP-A와 마찬가지 효과) |
UNIX File System Management |
- UNIX Kernel
- UNIX의 핵심
- 특정 컴퓨터 시스템에서 UNIX 환경을 구축하는 핵심기능을 구축
- 하드웨어와 직접적으로 관계하며 UNIX 시스템의 다른 부분이 하드웨어의 영향을 받지 않도록 함
- UNIX 유틸리티와 사용자 프로그램은 커널을 호출하여 서비스를 받음
- Kernel이 제공하는 서비스
- 파일관리와 보안, 입출력 서비스, 프로세서 스케쥴링과 관리
- 기억장소 관리, 인터럽트와 에러 처리, 날짜와 시간 서비스
- 시스템 작동 상황을 기록하는 사용상황통계 등
- UNIX의 이식 작업(Porting)은 커널의 하드웨어 의존부를 하드웨어에 맞게 변경하는 작업을 말한다.
- UNIX의 Kernel은 80개가 넘는 시스템 호출을 제공함.
- UNIX의 File System
- UNIX System은 여러 개의 물리적 디스크를 가지며 각각의 디스크는 하나 이상의 file system을 가지게 된다.
- 커널은 이런한 각각의 file system을 다루며 각각의 file system마다 device number(ex:/dev/dsk/c0t0d0s0)를 부여하며 이를 논리적 device로 다루게 된다.
- File System은 데이터를 file 단위로 저장하며 이 file들의 집합이 적절한형태로 구성된 것을 말하며 UNIX의 file system은 tree구조를 이룸
- 하나의 file system은 boot block, super block, inode list, data block으로 구성된다.
- Boot Block
- File System의 첫부분에 위치하며 Sun의 경우 첫번째 sector에 디스크 레이블이 들어가며 그 다음 15개 sector에 boot block가 들어감
- 이 16개의 sector는 8192byte(512*16)의 file system을 구성함
- Boot block에는 운영체제를 boot하거나 초기화 할 bootstrap code가 들어감
- 물론 시스템에서 boot하기위한 boot block이는 하나지만 각각의 file system은 boot block을 가지고 있음
- Super Block
- File System에 관한 중요한 정보를 저장하는 block
- 구성 요소
- File system의 크기, Free block의 수
- Inode list 크기, Free inode의 수, Free inod의 list, Free inode의 list 다음의 Free inode의 list
- Free block list와 Free inode의 list를 위한 lock field
- 이 Super block은 메모리에 적재되어 사용되므로 시스템을 정지하고자 할때는 항상 이 내용을 sync해야 함
- Inode list
- UNIX는 sequential file, index acess file, direct acess file 등의 파일 구조를 가지고 있지 않음
- 모든 파일은 index node 혹은 inode 라고 불리우는 정보 블록과 연결되어 있고 이 안에 다음과 같은 파일에 관한 정보를 포함한다.
- 파일의 길이
- 디스크 안의 파일의 소유 블록
- 파일의 소유주(UID & GID)와 이 파일을 다른 사용자가 이용할 수 있는지에 관한 정보
- 파일의 종류(일반, 특수, 디렉토리,…)
- 시스템 안에서의 reference counter(링크 수)
- 날짜 (생성일, 변경일, 접근일)
- 이 정보블럭 안에는 어떠한 파일이름도 들어있지 않으며 한 파일의 선택은 디렉토리라는 중간 과정을 통해서 이루어짐
- 디렉토리 또한 한 파일로 이루어졌기 때문에 이 안에는 시스템이 파일을 구별할 수 있도록 일련의 번호(Index)들과 이름이 나열되어 있음
- 이렇게 함으로써 어떠한 파일도 디렉토리를 통하여 쉽게 reference에 의한 구별이 될 수 있으며 한 파일이 여러 디렉토리안에 저장 가능함
- 만약 inode가 0이라면 이 파일은 완전히 삭제된 것을 의미함
- 디렉토리 또한 한 파일에 속하기 때문에 디렉토리는 다른 디렉토리의 reference를 가지고 있을 수 있음
- 이러한 구조는 우리가 일반적으로 생각하는 디렉토리 구조 tree구조와 유사하다.
- inode하나는 64byte의 크기를 갖는다.
- UNIX File의 종류\
- 일반 파일(ordinary file)
- 일반적인 데이터 파일과 소스코 등의 text file과 binary file을 말함
- UNIX에서는 확장자가 어떤 특별한 의미를 지니는 것이 아니고 단지 사용자가 편의상 사용하는 것이다.
- 따라서 확장자의 제한이 없다. 단지 컴파일러 등의 프로그램이 특별한 확장자를 요구할 뿐이다.
- File I/O는 커널 단계에서 buffering 작업을 해주기 때문에 file을 단순히 byte로 연결된 형태로 간주 할 수 있게 해준다.
- 이는 곧 디스크 상의 여러 곳에 저장되어 있는 file을 하나로 연결된 것처럼 해준다.
- UNIX에서 파일의 구조는 OS에 의해 제어되는 것이 아니고 이를 처리하는 프로그램에 의해 제어된다.
- Directory file
- 디렉토리는 파일을 저장하는 파일이다.
- 디렉토리는 파일을 포함하며 또한 파일을 포함하고 있는 서브 디렉토리를 가질 수 있다.
- 디렉토리는 일반 파일과는 다른 개념이지만 읽을 때는 일반 파일과 똑같이 취급되며 빈 디렉토리라도 ‘.’과 ‘..’ 두 파일을 가지고 있다.
- ‘.’는 자기 자신을 가르키며 ‘..’는 상위 디렉토리를 가르킨다.
- 특수 파일(special file)
- UNIX의 특별한 파일 타입으로 UNIX는 주변 장치도 하나의 파일로 간주하기 때문에 Printer, Tape, Memory 등은 파일 구조상의 하나의 파일로 나타낸다.
- 이러한 개념으로 UNIX는 모든 Device의 Input, Output 을 이 특수파일을 통해 Channel을 형성하여 처리한다.
- Hard link & Symbolic link file
- Link란 하나의 inode 에 여러 개의 파일이 연결되는 것을 뜻한다.
- 예를 들어 /home/user1/data라는 디렉토리가 있을 때 “..”파일은 user1 디렉토리의 ‘.’ 파일을 가르키고 있다.
- Hard link는 이러한 link의 개념과 같이 똑같은 inode를 가지는 파일을 생성하는 것이다.
- 이는 동일한 파일이 여러 곳에 존재하는 것과 같이 보인다.
- ‘ln’명령으로 새로 Hard link를 만들 수 있으며 새로운 Hard link 파일이 생성되어도 디스크 용량에는 변함이 없다.
- Symbolic link란 단지 한 파일을 다른 이름으로 지시하는 파일 타입니다.
- 이 것은 윈도우의 ‘바로가기 아이콘’ 과 유사하다.
- ‘ln -s’ 명령으로 Symbolic link파일을 생성하거나 이 파일을 삭제해도 실제 파일에는 아무런 영향이 없다.
- Socket file
- 이는 Process간의 Communication을 빠르고 신뢰성 있게 수행해 주는 것으로 여러 종류의 Socket이 있지만 대부분 Network을 경유해서 서로 다른 호스트 간 process를 connect하는 데 사용된다.
- Socket file 은 다른 Process에게 디렉토리의 Entry로 보여지기는 하지만 Connection에 포함되지 않은 Process는 읽거나 쓸 수 없다.
- 이 Socket file type은 4.3+BSD 운영체제에서만 사용되고 SVR4에서는 IPC(Interprocess Communication)을 위해 Socket을 사용하나 커널의 파일 타입으로서 사용하지 않고 Socket function의 libtary level에서 제공한다.
- Controllers and Disk Drivers
- 한 개의 controller에 여러 개의 unit(즉 디바이스)들을 연결 가능
- 즉 여러 개의 하드 디스크, CD-ROM, Tape Drive 등을 연결 가능
- Physical Disk Structure
- Disk Partitions
- 제일 바깥 쪽이 Volume Header이고, 다음 안쪽으로 root file system, swap space, user file system으로 구성됨
|
User and Group Management |
- Adding User
- 시스템 관리자의 가장 중요한 업무 중 하나
- System에 User를 등록하는 방법은 다음과 같다..(Solaris의 경우)
- Admin Tool을 이용한 방법
- Solaris에 포함된 관리 툴인 admintool을 사용하는 방법으로 X-Window상에서 편리하게 사용자를 추가 삭제 할 수 있음
- 또한 그룹, 호스트, 프린터, 직렬포트, 소프트웨어까지 열람 및 편집 가능
- 사용자 추가를 선택하여 사용자 아이디 등의 몇가지 정보를 입력하면 장동으로 홈 디렉토리가 만들어지며 계정이 생성된다.
- Note: admin tool은 사용이 편리하기는 하지만 파일을 덮어쓸 때 심볼릭 링크인지를 검사하지 않기 때문에 타인의 root권한의 획득이 가능하다. 때문에 일반적으로 사용하지 않고 Permission을 ‘100’으로 바꾸고 사용하지않는 경향이 있다.
- useradd command을 이용한 방법
- 사용자를 추가하는 명령어
- % useradd [-c comment] [-d dir] [-e expire] [-f inactive] [-g group] [-G group [group…]] [-m[-k skel_dir]] [-u uid [-o]] [-s shell] login-ID
- -c : 사용자의 이름
- -d : 사용자 home directory 절대경로
- -g : 사용자의 기본 그룹 아이디
- -G : 사용자의 2차 그룹 아이디
- -m : 사용자의 home directory가 존재하지 않으면 생성하는 옵션
- -k : ‘.cshrc’ 또는 ‘.profile’과 같은 파일을 복사해 올 ditectory 지정. 시스템은 기본적으로 ‘/etc/skel’ directory를 사용하도록 한다. 관리자는 이 directory의 파일들을 수정해서 쉽게 사용자들에 기본적인 환경을 구성할 수 있다.
- -u : 사용자의 UID(integer). 이 ID는 시스템에서 유일해야 한다.
- -s : 사용자가 사용할 shell 지정. ‘/bin/sh’이나 ‘/bin/ksh’을 넣어준다.
- login-ID : 사용자가 실제 사용할 ID
- 예) % useradd -c 문준현 -d /user/imp -m -k /etc/skel -u 1004 -g 1000 -s /bin/csh imp
- vipw command을 이용한 방법
- vipw 명령을 이용해서 사용자를 추가하는 방법
- vipw명령을 입력하면 ‘/etc/passwd’ 파일이 화면에 편집모드로 나타난다.
- 한 라인을 복사하고 추가할 사용자에게 맞게 수정한다.
- 수정한 후 ‘wq’로 저장하고 나오면 다음과 같은 화면이 나타난다.
You have modified the password file. Press ‘e’ to edit the shadow file for consistency, ‘q’ to quit: |
- 여기서 ‘e’를 입력하면 ‘/etc/shadow’ 파일을 편집할 수 있다.
- 마찬가지로 한 라인을 복사하여 사용자에게 맞게 수정한다.
- 마지막으로 사용자의 home directory를 만들고 사용자에게 chown 명령으로 권한을 넘겨준다.
- pwconv command을 이용한 방법
- 이 명령은 /etc/passwd file의 내용을 /etc/shadow file에 적용시키는 명령
- /etc/passwd file을 수정하고 이 명령을 실행시키면 그대로 /etc/shadow file에 적용이 가능하다.
- 그 다음에 사용자의 home directory 생성
- /etc/skel directory의 file을 사용자 home directory에 복사
- 사용자 home ditectory 하위를 chown 명령으로 소유권 넘김
- Delete user
- 사용자를 시스템에서 삭제할 때는 다음과 같은 명령을 사용함
- % userdel ?r login-ID
- -r : 사용자의 home directory 삭제
- Adding group
- 시스템에 새로운 그룹을 추가할 때는 admin tool을 사용하거나 다음의 명령을 이용한다.
- % groupadd [-g gid [-o]] group
- -g gid : 이 옵션은 추가될 Group의 GID(integer)를 지정하는 것이고 이 옵션을 지정하지 않으면 가장 높은 GID의 다음의 숫자가 GID가 된다.
- -o : 하나의 GID를 다른 Group이 중복해서 사용하는 것을 허용하는 옵션.
- Delete group
- 시스템에서 Group을 삭제할 때는 다음과 같은 명령을 사용한다.
- % groupdel group
- Accounting
|
Administration Commands |
- Monitoring Processes
- 다중 사용자 운영체제인 UNIX의 특징 때문에 프로세스의 관리는 시스템관리자의 중요한 업무이다.
- ps(report process status)
- kill(terminate or signal processes)
sysdef
- 시스템 하드웨어 configuration 정보들을 보여줌
- 어떤 디바이스가 인스톨 되어 있는지 CPU는 어떤 종류를 사용하는지 등 하드웨어 정보를 보여준다.
- IRIX : hinv
- AIX : iscfg, isdev
- swap -a
- UNIX System의 swap space를 monitoring, deleting, adding 하는데 사용
Swap은 UNIX System에서 하드디스크를 메모리처럼 사용하여 부족한 메모리의 용량을 증대시킴으로서 프로그램 수행 속도를 향상시키기 위해서 사용
- option
- -a : swap resource를 add
- -d : swap resource를 delete
- -l : 현재 사용되고 있는 모든 swap resource 정보를 보여줌
- mkfile
- 형식 mkfile size[k|b|m|g] filename
- 기능
- swap space 등을 증대하기 위하여 file을 만들어 주어야 할 경우 사용
- option
- -v : 만들어질 file에 대한 이름이나 크기 등의 정보를 표시함
- 예) % mkfile 50m testfile
- passwd
- 형식 passwd [-df] user-name
- 기능
- 사용자의 패스워드를 변경 도는 패스워드 파일에 사용자를 등록시키는 명령
- option
- -d :사용자 패스워드를 삭제할 때
- -f : 사용자 패스워드를 강제로 변경(새로이 로그인시 변경 요구)
- quot : 각 사용자별 디스크 공간 사용 상태 표시
- 형식 quot [option][filesystem]
- 기능
- 화일 시스템의 각 사용자가 소유한 디스크 공간의 블럭수를 리포트한다.
- option
- -f 사용자들이 소유한 file의 개수를 표시
- -a 모든 화일 시스템에 대한 리포트 생성
- -c 전체 블럭 또는 적은 화일들의 누적된 사이즈, 화일내의 블럭 사이즈등을 리포트
- -V 지난 30, 60, 90일 동안 접근되지 않은 블럭의 개수를 리포트
- cron : 주기적으로 command 수행시키는 daemon
- 형식 cron
- 기능
- 명시한 날짜와 시간에 지정한 command들을 수행한다.
- 정규적으로 스케쥴된 command 들이 /var/spool/cron/crontabs 디렉토리의 crontabs화일에 명시될 수 있다.
- 사용자들이 crontab command 를 사용하여 자신의 crontab 화일을 제공할 수 있다.
- 단 한번만 실행될 command는 at command를 사용하여 crontab파일을 제공한다.
- crontab : crontab 파일의 생성, 편집, 삭제
- 형식 crontab [option] [username]
crontab [filename]
- 기능
- 지정한 파일 또는 표준 입력을 복사하여 사용자들이 crontab 파일을 보관하는 디렉토리에 포함시킨다.
- 사용자의 crontab 파일에는 그 사용자를 대신하여 지정한 날짜와 시간에 수행시켜야 하는 command들이 나열되어 있다.
- uname
- 형식 uname -a
- 기능
- 현재 시스템의 Identify를 보여줌
- 보여주는 내용은 현재 자신의 시스템의 O/S 버전 및 Hostname, Process name, 그래픽 보드 등
- option
- hostname
- 형식 hostname [-s] [nameofhost]
hostname newhostname
- 기능
- 뒤에 아무런 내용없이 hostname을 실행하면 현재 자신의 시스템의 이름을 보여줌
- 그러나 root가 hostname newhostname이라고 입력하면 시스템의 이름이 바뀌게 됨
- hostid
- 형식 hostid
- 기능
- 자신의 장비의 고유 ID를 보여줌
- 이것은 장비 생산 업체에서 부여한 고유한 ID로서 유일함
- UNIX OS에서는 대부분의 사용 가능한 상업적인 소프트웨어들이 위의 명령을 가지고 얻은 고유 ID로서 소프트웨어 라이센스를 만들어 낸다.
- 상업적인 소프트웨어를 사용하기 위해서는 위 명령어를 가지고 얻어진 ID를 소프트웨어 판매회사에 보내어 라이센스를 받아야 함
- IRIX
- eeprom (ROM 모니터 패스워드)
- 형식 eeprom
- 기능
- 시스템을 다른 사람이 수동으로 부트하지 못하게 하기 위하여 ROM Program에 Password를 할당할 수 있음
- IRIX
이것은 매우 주의해서 사용해야 한다. 만약 이 패스워드를 잊어버리면 하드웨어에 손을 대야 복구가 가능하게 때문에 조심해서 사용해야 한다. |
- sync (syncronize) : 디스크 정보의 동기화
- 형식 sync
- 기능
- 디스크 상에 써넣을 메모리 내의 buffer의 내용을 출력함
- 수정된 수퍼 블록, 수정된 i-node 및 지연된 블럭형 입출력을 포함한다.
- CPU가 비정상적으로 정지되기 전에 호출되어 모든 디스크 write들이 완료된것을 확인할 수 있다.
- 사용자가 많은 시간대에 부득이 시스템을 리부팅해야 하는 경우는 이 sync명령을 필히 해주어야 한다.
- 이 sync명령은 약간의 delay time이 생길수 있으므로 보통 3-4번 정도를 연속해서 해주는 것이 좋다.
- System crash
- UNIX System은 때때로 급작스런 정전이나 하드웨어 고장, 조작 실수 등으로 인하여 시스템이 정지되는 수가 있다.
- 이러한 경우를 System crash라고 한다.
- Crash가 발생한 경우 파일 시스템이 손상되거나 파괴될수 있다.
- 이런 경우는 조속히 보수를 하는 것이 중요하다.
- 파일 시스템의 가능한 손상을 최소화시키기 위해서는 먼저 UNIX System을 booting시켜야 한다.
- 이 때 시스템의 boot는 단일 사용자 모드로 하고 root system disk를 제외한 다른 장치를 mount시키지 않아야 한다.
- 시스템의 booting이 완료되면 곧 fsck command를 root 디스크에 대하여 실행하여 root를 보수한다.
- 만일 파일 시스템이 보수되면 sync를 실행하지 않고 곧바로 시스템을 reboot한다.
- 그리고 다른 모든 파일 시스템을 mount 시키기 전에 fsck command를 실행시킨다.
- Crash가 발생한경우 발생 가능한 손상의 종류
- Superblock의 정보가 맞지 않는다.
- i-node의 link 개수가 맞지 않는다.
- 하나 이상의 i-node가 동일한 블록을 참조한다.
- 사용한 i-node가 어느 디렉토리로부터도 참조되지 않는다.
- 블록이 미사용으로 표시되어 있는데 i-node로부터 참조된다.
- 블록이 사용 중으로 표시되어 있는데 i-node로부터 참조되지 않는다.
- 보수한 파일이나 디렉토리들은 소유자들에게 통보하여 완전성을 점검토록해야 한다.
- fsck (file search check) : File System의 점검과 보수
- 형식 fsck [option] [filesystem(s)]
- 기능
- UNIX File System의 오류 상태를 조사하여 대화식으로 복원한다.
- Fils System이 정상 상태로 되어 있으면 화일, 사용 블럭, 미사용 블럭의 수를 출력한다.
- File System이 오류 상태로 되어 있으면 수정 여부를 묻는 메시지를 사용자에게 출력한다.
- 수정 처리를 실행하면 그 결과로 어느 정도의 데이터가 손실될 수 있다.
- 손실된 데이터의 양과 중요도는 진단 출력에 표시된다.
- 옵션을 지정하지 않으면 사용자의 yes/no 응답에 의해 수행된다.
- 화일시스템을 명시하지 않으면 /etc/fstab 화일에 기록된 화일 시스템을 참조한다.
- option
- -y : fsck에 의한 질문에 무조건 yes로 답한다.
- -n : fsck에 의한 질문에 무조건 no로 답한다.
- -w : File system을 단지 check만 한다.
- 사용예
- % fsck -y /dev/dsk/c0t0d0s0
- % fsck -n /dev/dsk/c0t0d0s0
- % fsck -w /dev/dsk/c0t0d0s0
- UNIX System Management Tool
UNIX 종류 |
관리도구 명령어 |
Solaris |
Admin Tool |
AIX |
smit, VSM |
IRIX |
Cadmin facility |
Digital UNIX |
setup |
HP-UX |
SAM |
- 이러한 툴들은 모두 시스템 관리자의 편의를 돕기 위한 그래픽 툴이다.
- 때로는 유용하게 사용할 수 있으나, 종종 부주의한 실수를 일으키거나 이러한 툴들을 사용할 수 없는 경우가 종종 발생한다.
- 그래서 유능한 시스템 관리자가 되기 위해서는 시스템관리 명령어들을 잘 익혀두는 것이 좋다.
|
Installing Software |
- Installing Software
- 사용자를 위해 새로운 소프트웨어를 설치하는 것 역시 관리자의 중요한 일중의 하나이다
- 관리자는 항상 사용자를 위해 새로운 Applicaition이나 OS Upgrade를 실시해야 한다.
- 새로운 Sofeware Package Install(pkgadd command)
- Binary package를 install하는 방법
- 일반적으로 Software는 Package의 형태로 부여된다.
- 이러한 Package를 설치하는 명령으로 pkgadd명령이 있다.
- pkgadd (transfer software package to the system)
- 형식 pkgadd [-nv][-a admin][-d device][[-M] -R root_path][-r response][-V fs_file][pkginst..]
- -d option을 사용하지 않으면 pkgadd명령은 기본 스풀 드렉토리(/var/spool/pkg)에서 package를 찾는다.
- 또 -s option을 사용하면 package를 install하는 대산 이것을스풀 디렉토리로 복사한다.
- option
- -d device package를 install 또는 copy한다.
device는 fullname이거나 tape, floppy disk, hard disk가 될 수 있다. 또한 device alias를 쓸 수 있다.(예-/floppy/floppy0)
- -n Non-interative mode로 작동한다. Default는 interative이다.
- -s spool install 대신에 spool directory에 copy한다.
- Source Code Install
- 이미 컴파일된 binary를 받아 설치하지 않고 source code를 받아서 시스템에서 compile하여 설치하는 방법이다.
- 이는 시스템에 좀 더 최적화된 software를 설치하기 위해서이다.
- 일반적인 순서
- 필요한 software source code를 다운 받는다.
- 시스템에 적절하게 configuration 한다.
- Compile 한다.
- Install 한다.
- 설치한 software를 실행한다.
- Software Administering
- 설치한 소프트웨어에 대한 정보를 알아내는 방법과 이를 삭제하는 방법
- pkginfo (display software package information)
- 시스템내에 설치되어 있는 software package들의 정보를 알려주는 명령
- 형식 pkginfo [-q|-x|-l][-p|-i][-r][-a arch][-v version][-c category][pkginst]
pkginfo [-d device][-R root_path][-q|-x|-l][-a arch][-v version][-c category][pkginst]
- option
- -q : 정숙 모드
- -p : 부분적으로 설치된 패키지 선택
- -i : 완전히 설치된 패키지 선택
- -x : 추출된 목록
- -ㅣ : 긴 목록
- -r : 이동하기 위한 기준
- -c : 범주, [범주…]
- -a : 구조
- -v : 버전
- 일반적으로 시스템의 package를 알아보기 위해
- % pkginfo | more
- % pkginfo -c applicationn
- 설치한 package에 대한 자세한 정보를 알아내는 방법
- pkgparam (display package parameter values)
- 시스템에 설치된 package에 관련된 여러 parameter value를 알려줌
- 형식 pkgparam [-v][-d device][-R root_path]pkginst[param]
pkgparam -f filename [-v][param]
- 예) % pkgparam -v <pakage>
- pkgrm (remove a package from the system)
- 시스템에 설치된 Soft pakage를 제거할 때 사용함
- 형식 pkgrm [-nv][-a admin][[-A|-M] -R root_path][-V fs_file]
pkgrm -s spool [pkglist...]
- 특정 package를 시스템에서 제거하는 방법
|
Backups and Restores |
- 백업 관리 유틸리티
- dump 전체 백업 또는 최근에 변경된 데이터의 백업
- restore dump command에 의해 백업된 테이프에서 파일의 복원
- volcopy 하나의 디스크의 파일시스템 전체 혹은 일부를 다른 디스크 또는 테이프에 압축된 이미지로 복사
- labelit 파일 시트템의 superblock에 label을 기록
- 시스템 Backup
- 디스크를 기반으로 한 시스템에서 디스크 화일들의 복사본을 다른 매체에 보관하는 2차적인 보전 작업
- UNIX의 dump에는 0~9까지의 서로 다른 수준이 있음
- 수준 0은 total dump로서 모든 파일이 dump되며 이 dump 출력은 시스템이 재복구에 사용될 수 있다.
- 1~9까지는 부분 dump애며 수준차에 따라 변경된 화일들만 dump된다.
- 완전히 디스크 전체를 dump하는 수준 0은 정보의 양이 많고 시간을 많이 필요로 하기 때문에 자주 실행할 수는 없다.
- 보통 total dump는 일주일에 한번 정도 실행한다.
- 나머지 한 주간 동안의 1일 dump는 시스템의 상황에 따라서 결정된다.
- 하루 동안에 변경된 부분만 dump
- total dump이래 변경된부분만 dump
- ruler sequence로 dump
- 예를 들면 연속으로 매일의 수준을 3,2,3,1,2,3,2,3,로 하여 dump
- 위의 두가지 방법을 보완한 형태
- dump : 파일 시스템의 dump
- 형식 dump [option] filesystem
- 기능
- UNIX File system의 모든 파일 또는 어떤 날짜 이후 변경된 화일들을 마그네틱 tape로 dump한다.
- 옵션을 정하지 않으면 default로서 9u가 된다.
- option
- level dump의 수준 0~9까지 있음
- u 전체 백업 이 후 달라진 내용만을 백업하는 옵션
- f dump-file dump를 file의 형태로 한다. 예를 들면 /dev/rmt/0
- D dump를 disk로 한다.
- b factor 테이프에 기록할 블록 사이즈 명시
- volcopy : 파일 시스템의 복사
- 형식 volcopy [option] fsname srcdev vol1 destdev vol2
- 기능
- 디스크의 모든 파일 시스템의 image를 다른 디스크 또는 tape에 똑같이 복사함
- bit-for-bit 복사이므로 total backup으로만 사용가능
- 보통 신속한 disk-to-disk 복사에 사용된다.
- volcoy의 가장 큰 장점은 손실한 데이터를 아주 용이하게 복구 가능함.
- option
- -F ufs 복사하고자 하는 File system의 type
- fsname File system을 복사할 때의 mount point
- scrdev File system을 복사할 device명 (source device)
- vol1 source device의 volumn label
- destdev 복사할 destination device의 device명
- vol2 destination device의 volumn label
- labelit : 파일 시스템에 label 부여
- 형식 labelit [option] dev [faname vol]
- 기능
- 파일 시스템의 superblock에 짧은 label을 기록한다.
- 이후의 작업에서 파일 시스템을 식별하는데 사용된다.
- option
- -F ufs ufs file system type
- dev raw disk device의 label
- fsname File system을 복사할 때의 mount point
- vol physical media의 임의의 식별자
- restore : dump로부터의 복구
- 형식 restore options [filename(s)]
- 기능
- Dump command로부터 생성된 backup 데이프트로부터 화일들을 복구한다.
- 반드시 옵션을 지정해야 한다.
- option
- i : 복구를 대화식으로 하도록 함
- r : 수준 0으로 dump된 것을 새로운 file system이나 빈 file system으로 전체 복구함.
- R : 복구 재개. 전체 백업된 것중에서 부분적인 복구 가능
- t : 백업 content 표시
- X : 파일또는 디렉토리를 복구또는 압축해제
- h : 디렉만을 복구 파일이 들어 있지 않은 경오는 복구 하지 않음
- v : 복구한 파일 이름을 표시함
- UNIX System의 Network 관련 File
- /etc/hosts
- /etc/networks
- /etc/netmasks
- /etc/protocols
- /etc/services
- /etc/ethers
- /etc/bootptab
- /etc/inetd.conf
- /etc/hosts
- 사용되는 host 주소들의 모임을 기록한 화일
# Internet host table # 127.0.0.1 localhost 202.30.35.54 bravo.kwangju.ac.kr ice1 loghost 210.110.193.11 ice1 210.110.193.11 ice2 203.246.48.7 cse1 203.246.48.13 cse2 203.246.48.15 cse4 203.246.48.18 cse7 203.246.48.8 dblab 203.246.48.9 dblabs 203.246.48.17 cse6 |
- /etc/networks
- 네트워크 이름과 각각의 인터네트 주소
#ident "@(#)networks 1.4 92/07/14 SMI" /* SVr4.0 1.1 */ # # The networks file associates Internet Protocol (IP) network numbers # with network names. The format of this file is: # # network-name network-number nicnames . . . # The loopback network is used only for intra-machine communication # loopback 127 # # Internet networks arpanet 10 arpa # Historical |
- /etc/netmasks
- 경로 설정에 필요한 네트 마스크를 지정하는 파일
Subnet mask가 제공하는 세 가지 정보 Network, Subnetwork, Host The netmasks file associates Internet Protocol (IP) address # masks with IP network numbers. # # network-number netmask # # # Both the network-number and the netmasks are specified in # "decimal dot" notation, e.g: # # 128.32.0.0 255.255.255.0 |
- /etc/services
- 네트워크 서비스 이름
사용하는 포트 이름 트랜스포트 프로토콜의 종류 지정 ftp-data 20/tcp ftp 21/tcp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver name 42/udp nameserver whois 43/tcp nicname # usually to sri-nic domain 53/udp domain 53/tcp hostnames 101/tcp hostname # usually to sri-nic sunrpc 111/udp rpcbind |
- /etc/protocols
- 트랜스포트 프로토콜의 번호 기록
#ident "@(#)protocols 1.2 90/02/03 SMI" /* SVr4.0 1.1 */ # # Internet (IP) protocols # ip 0 IP # internet protocol, pseudo protocol number icmp 1 ICMP # internet control message protocol ggp 3 GGP # gateway-gateway protocol tcp 6 TCP # transmission control protocol egp 8 EGP # exterior gateway protocol pup 12 PUP # PARC universal packet protocol udp 17 UDP # user datagram protocol hmp 20 HMP # host monitoring protocol xns-idp 22 XNS-IDP # Xerox NS IDP rdp 27 RDP # "reliable datagram" protocol |
- /etc/ethers
- ethernet 주소와 시스템의 host name을 갖고 있음
- rarpd에 의해 사용됨
- 형식
- Ethernet-address host-name
- 예: 8:0:20:f:aa:d9 ganesh
- /etc/bootptab
- startup시 bootpd에 읽혀짐
- 형식
- bootp-client:tag
- bootp-client는 bootp-client의 실질적인 이름
- /etc/inetd.conf
- 화일 /etc/inetd.conf에 포함되어 있는 정보를 inetd이 사용하여 네트워크 서비스를 관리
- ftp,telnet 등의 요구가 오면 새로운 프로세스가 connection을 위해 inetd에 의해 시작됨
Configuration file for inetd(1M). See inetd.conf(4). # To re-configure the running inetd process, edit this file, then # send the inetd process a SIGHUP. # Syntax for socket-based Internet services: # <service_name> <socket_type> <proto> <flags> <user> <server_pathname> <args> # # Ftp and telnet are standard Internet services. # ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd |
- UNIX System의 Network Process
- inetd
- 모든 네트워크 서비스 daemon을 관리
- /etc/inetd.conf 란 configuration 화일에 따라 수행
- boot time 에 시작
- 시스템상에 항상 running
- routed
- RIP(routing information protocol)를 구현한 process
- 동적으로 routing table 을 생성하는 기능
- host가 internetwork router이면 주기적으로 send
- routing table 복사본을 연결된 호스트 혹은 네트웍에 전송함
- rarpd
- RARP daemon
- /etc/hosts, /etc/ethers 화일을 참조
- IP address를 발견하지 못하면 no reply를 전송
- bootpd
- BOOT server process
- BOOT protocol을 정의(RFC 951,1048)
- bootpd 명령 형식
- /etc/bootpd [-s -t -d]
- -s는 standalone mode, -t는 분 단위의 timeout value, -d는 debugging을 위해 사용됨
- boot request를 수신할 때 daemon이 시작
- nfsd
- NFS server상에서 실행
- 클라이언트로부터 RPC call을 accept
- named
- Internet-domain 스타일 네임 서버 daemon
- host name을 네트워크 주소로 mapping
- dynamically provide host-to-address lookup
- maintain distributed database of hostname-to-IP address mappings(4.3 BSD)
- automount
- 자동적으로 NFS 화일 시스템을 mount
- 더이상 필요하지 않으면 unmount
- rpcbind
- Solaris 시스템에서 실행
- SunOS 상에서는 동일한 기능인 portmap process가 사용됨
- RPC 서비스 전에 시작되어야 함
- universal address(port number)를 RPC 프로그램 number 로 mapping 하는 기능
- UNIX System의 Network Command
- hostname
- netstat
- route
- ifconfig
- ping
- arp
- nslookup
- domainname
- rpcinfo
- snoop
- hostname
- 현재의 host name을 출력
- /etc/rc.boot 파일이 수행될 때 결정됨
- host name에 대한 정보는 화일 /etc/hostname.xx0에서 유지됨
- host name의 변경
- 사용 예
- netstat
- 기능
- 연결되어 있는 종단간 호스트의 정보
- 네트워크 접속 하드웨어에 대한 정보
- 데이터 버퍼
- 경로 결정 표 및 통계
- 프로토콜별 통계
- netstat의 실행 결과
- 종단간 호스트의 정보
- netstat -a
- 현재 연결되어 있는 모든 종단간 호스트에 대한 정보 표시
- 클라이언트로부터 연결을 기다리고 있는 모든 서버에 대한 정보까지 표시
- 실행 예
TCP Local Address -----------------------
*.ftp .telnet
bravo.kwangju.ac.kr.telnet bravo.kwangju.ac.kr.nfsd |
Remote Address -----------
*.* *.*
ice1.1210 ice2.985 |
Swind ------
0 0
8647 8760 |
Send-Q --------
0 0
0 0 |
Rwind ------
0 0
8760 8760 |
Recv-Q -------
0 0
0 0 |
State ----------
LISTEN LISTEN
ESTABLISHED ESTABLISHED | |
- 네트워크 접속 하드웨어에 관한 정보
Name |
Mtu |
Net/Dest |
Address |
Ipkts |
Ierrs |
Opkts |
Oerrs |
Collis |
Queue |
lo0 |
8232 |
loopback |
localhost |
198611 |
0 |
198611 |
0 |
0 |
0 |
lane0 |
1500 |
bravo.kwangju.ac.kr |
bravo.kwangju.ac.kr |
2513926 |
0 |
1324269 |
0 |
0 |
0 | |
- 데이터 버퍼
streams |
allocation: |
|
|
|
|
current |
maximum |
cumulative total |
allocation failures |
streams queues msg linkblk strevent syncq qband |
154 459 267 8 6 15 0 |
255 640 16313 340 340 113 255 |
8026 19003 11213297 172 36693 629 2 |
0 0 0 0 0 0 0 |
167 Kbytes allocated for streams data | |
- 경로 결정 표 및 통계
- 경로 결정표의 수정은 route 명령 사용
- 수정된 경로 결정 표 확인
- netstat -r
Routing Table: Destination |
Gateway |
Flags |
Ref |
Use |
Interface |
------------- |
------------------- |
------ |
---- |
------- |
--------- |
202.30.35.0 224.0.0.0 default localhost |
bravo.kwangju.ac.kr bravo.kwangju.ac.kr 202.30.35.33 localhost |
U U UG UH |
3 3 0 0 |
209 0 4096 195006 |
lane0 lane0
lo0 | |
- 프로토콜별 통계
- netstat -s
UDP |
udpInDatagrams = 1493 udpOutDatagrams = 1488 |
udpInErrors = 0 |
TCP |
tcpRtoAlgorithm = 4 tcpRtoMax = 60000 tcpActiveOpens = 2147 tcpAttemptFails = 1 tcpCurrEstab = 1 tcpOutDataSegs =191769 |
tcpRtoMin = 200 tcpMaxConn = -1 tcpPassiveOpens = 638 tcpEstabResets = 29 tcpOutSegs =319932 tcpOutDataBytes =159754275 |
IP |
ipForwarding = 2 ipInReceives =760857 ipInAddrErrors = 0 ipForwDatagrams = 0 |
ipDefaultTTL = 255 ipInHdrErrors = 0 ipInCksumErrs = 0 ipForwProhibits = 0 |
ICMP |
icmpInMsgs = 286 icmpInCksumErrs = 2 IcmpInDestUnreachs = 4 |
icmpInErrors = 0 icmpInUnknowns = 0 icmpInTimeExcds = 0 | |
- netstat -rs
Routing Table: Destination |
Gateway |
Flags |
Ref |
Use |
Interface |
------------- |
------------------- |
------ |
---- |
------- |
--------- |
202.30.35.0 224.0.0.0 default localhost |
bravo.kwangju.ac.kr bravo.kwangju.ac.kr 202.30.35.33 localhost |
U U UG UH |
3 3 0 0 |
209 0 4096 195006 |
lane0 lane0
lo0 |
UDP |
udpInDatagrams = 1493 udpOutDatagrams = 1488 |
udpInErrors = 0 |
TCP |
tcpRtoAlgorithm = 4 tcpRtoMax = 60000 tcpActiveOpens = 2147 tcpAttemptFails = 1 tcpCurrEstab = 1 tcpOutDataSegs =191769 |
tcpRtoMin = 200 tcpMaxConn = -1 tcpPassiveOpens = 638 tcpEstabResets = 29 tcpOutSegs =319932 tcpOutDataBytes =159754275 |
IP |
ipForwarding = 2 ipInReceives =760857 ipInAddrErrors = 0 ipForwDatagrams = 0 |
ipDefaultTTL = 255 ipInHdrErrors = 0 ipInCksumErrs = 0 ipForwProhibits = 0 |
ICMP |
icmpInMsgs = 286 icmpInCksumErrs = 2 IcmpInDestUnreachs = 4 |
icmpInErrors = 0 icmpInUnknowns = 0 icmpInTimeExcds = 0 | |
- route
- ifconfig
- ifconfig의 기능
- 네트워크 접속에 관련된 변수 조정
- 접속 하드웨어에 대한 정보
- 정보에 대한 새로운 값의 설정
- 네트워크 관리자만이 주로 사용 가능함
- ifconfig le0 (Backbone line이 Fiber인 경우는 lane0)
- 네트워크 접속 방법으로 ethernet 카드 지정
- [bravo] ifconfig lane0
lane0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500 inet 202.30.35.54 netmask ffffff00 broadcast 202.30.35.255 ether 8:0:20:96:fd:d0 |
- ifconfig -a
- 호스트에서 사용하고 있는 모든 네트워크 접속 하드웨어에 대한 변수 값 출력
- 실행 예
[bravo]ifconfig -a lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232 inet 127.0.0.1 netmask ff000000 lane0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500 inet 202.30.35.54 netmask ffffff00 broadcast 202.30.35.255 ether 8:0:20:96:fd:d0 |
- ping
- 접속하고자 하는 호스트가 사용가능한지를 check하는 명령
- ping 호스트 [제한시간]
- 사용 예
- [bravo]ping honey
- honey.kwangju.ac.kr is alive
- [bravo]ping -s honey 64 10
PING honey.kwangju.ac.kr: 64 data bytes 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=0. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=1. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=2. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=3. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=4. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=5. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=6. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=7. time=1. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=8. time=2. ms 72 bytes from honey.kwangju.ac.kr (202.30.35.45): icmp_seq=9. time=2. ms
----honey.kwangju.ac.kr PING Statistics---- 10 packets transmitted, 10 packets received, 0% packet loss round-trip (ms) min/avg/max = 1/1/2 |
- arp
- ARP 프로토콜에 의해 사용됨
- Internet-to-Ethernet 변환 테이블을 표시하거나 변경
- 사용 예
- arp hostname
- arp -a
- arp -d hostname
- arp -f filename
- arp -s hostname ether_addr [temp] [pub] [trail]
- [bravo]arp -a
Net to Media Table |
Device |
IP Address |
Mask |
Flags |
Phys Addr |
------------------ |
------------------ |
---------------- |
------ |
------------------ |
lane0 lane0 lane0 lane0 lane0 lane0 lane0 |
202.30.35.33 dns.kwangju.ac.kr 202.30.35.130 bravo.kwangju.ac.kr klic.kwangju.ac.kr 203.246.50.209 224.0.0.0 |
255.255.255.255 255.255.255.255 255.255.255.255 255.255.255.255 255.255.255.255 255.255.255.255 240.0.0.0 |
SP
SM |
00:00:ef:04:d1:10 08:00:5a:99:81:bc 00:60:2f:03:bc:81 08:00:20:96:fd:d0 00:20:48:09:0b:95 00:10:5a:82:ee:00 01:00:5e:00:00:00 | |
- nslookup
- Internet domain name server를 찾기 위해 사용되는 interactive 명령
- nslookup 명령 형식: nslookup [address]
[bravo]nslookup honey Server: dns.kwangju.ac.kr Address: 202.30.35.43 Name: honey.kwangju.ac.kr Address: 202.30.35.45
[bravo ]nslookup hosim Server: dns.kwangju.ac.kr Address: 202.30.35.43 Name: hosim.kwangju.ac.kr Address: 202.30.35.55 |
- domainname
- domainname의 기능
- 현재의 네트워크 정보 서비스 기능을 제공
- domain name을 set하거나 display하는데 사용
- 사용 형식
- domainname [name-of-domain]
- 인수 없이 사용하면 현재의 도메인 이름
- domain name에 관한 정보는 파일 /etc/defaultdomain에서 유지하고 있음
- rpcinfo
- rpc와 관련된 정보를 보고하는 기능
- 사용 형식
- rpcinfo [-m] [-s] host
- rpcinfo [-p] host
- rpcinfo -s
- 간결한 형태로 정보를 display
- [bravo ]rpcinfo -s
program |
version(s) |
netid(s) |
service |
owner |
100000 100029 100078 100024 100232 |
2,3,4 2,1 4 1 10 |
udp,tcp,ticlts,ticotsord,ticots ticots,ticotsord,ticlts ticots,ticotsord,ticlts ticots,ticotsord,ticlts,tcp,udp udp |
rpcbind keyserv kerbd status sadmind |
superuser superuser superuser superuser superuser | |
- rpcinfo
- displays all RPC services registered on the local host
program |
version |
netid |
address |
service |
owner |
100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 |
4 3 4 3 4 3 4 3 2 4 3 2 |
ticots ticots ticotsord ticotsord ticlts ticlts tcp tcp tcp udp udp udp |
bravo.rpc bravo.rpc bravo.rpc bravo.rpc bravo.rpc bravo.rpc 0.0.0.0.0.111 0.0.0.0.0.111 0.0.0.0.0.111 0.0.0.0.0.111 0.0.0.0.0.111 0.0.0.0.0.111 |
rpcbind rpcbind rpcbind rpcbind rpcbind rpcbind rpcbind rpcbind rpcbind rpcbind rpcbind rpcbind |
superuser superuser superuser superuser superuser superuser superuser superuser superuser superuser superuser superuser | |
- uname
- 현재 시스템의 정보를 display
- 사용 예
- [bravo]uname
- SunOS
- [bravo]uname -a
- SunOS bravo 5.6 Generic_105181-16 sun4u sparc SUNW,Ultra-Enterprise
- snoop
- 네트웍 상에서 패켓의 내용을 display and capture한다
- Sun 시스템에서 사용됨
- [bravo / 6 ]snoop -c 5
Using device /dev/lane (promiscuous mode) 203.245.15.12 -> bravo.kwangju.ac.kr HTTP GET /~c96141058/st_white.mid HTTP/1.1 bravo.kwangju.ac.kr -> 203.245.15.12 HTTP HTTP/1.1 404 Not Found 210.110.193.20 -> bravo.kwangju.ac.kr TELNET C port=1169 bravo.kwangju.ac.kr -> 210.110.193.20 TELNET R port=1169 Using device /dev/la 202.30.35.130 -> bravo.kwangju.ac.kr ICMP Redirect (for network to 202.30.35.29) snoop: 5 packets captured |
- snoop -v arp
ETHER: ----- Ether Header ----- ETHER: Packet 1 arrived at 14:13:36.88 ETHER: Packet size = 60 bytes ETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast) ETHER: Source = 0:a0:24:3d:2:97, ETHER: Ethertype = 0806 (ARP) ARP: ----- ARP/RARP Frame ----- ARP: Hardware type = 1 ARP: Protocol type = 0800 (IP) ARP: Length of hardware address = 6 bytes ARP: Length of protocol address = 4 bytes ARP: Opcode 1 (ARP Request) ARP: Sender's hardware address = 0:a0:24:3d:2:97 ARP: Sender's protocol address = 203.246.48.203, 203.246.48.203 ARP: Target hardware address = ? ARP: Target protocol address = 203.246.48.203, 203.246.48.203 | |
참고 서적 및 인터넷 사이트 |
- 참고 서적
- UNIX 시스템 이론과 실습. 金明昊 저. 大英社.1998
- UNIX System Administration Handbook. Nemeth,Snyder,Seebass,Hein 저
- 최재영, 김명호, 김영배 공역. 홍릉과학 출판사.1998
- 초보자를 위한 유닉스 일주일 완성. Taylor 저. 김창룡 역. 인포북
- UNIX System V Primer 한국어판. Matin & Prata 저. 김형태, 박찬열 역. 인포북
- 정보화를 살아가는 현대인을 위한 UNIX & Internet. 이상복,음호식 공저. 도서출판 기한재
- 인터넷 사이트
| |