본문 바로가기

Projects/Server

UNIX Doc

자료출처 = http://blog.naver.com/swinter8

저자 소개

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의 기본 - 환경 설정
  • 기본적 .cshrc file 내용

  • 기본적 .login file과 .profile내용

UNIX의 기본 - 기본 명령어
  • passwd (change login passwd)
    • 패스워드를 바꾸는 명령
    • 영문, 숫자를 섞어서 6~8자 내외
    • 첫번째로 숫자나 특수문자가 올 수 없음
  • exit, logout
    • 접속을 종료할 때 사용
  • whoami
    • 현재의 user name을 나타내 줌
  • 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
    • 현재 자신의 directory 를 보여줌
  • 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]]
      • date [+format]
    • 기능
      • 시스템의 현재 시간과 날짜를 표시한다. 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)
    • 새로운 directory를 만드는 명령
  • rmdir (remove directory)
    • 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에서 제공하는 간단한 계산기(4칙 연산)
    • 예) % bc

      % bc
      1+2+3+4+5+6+7+8+9 <enter>
      45 : 정답
      종료는 ^Ctrl-D 입력

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)하는데 쓰인다.
    • 사용 예
      • % cat -n << endtest > myenv : text의 마지막에 endtext를 입력

        my Home Directory is $home
        my Path is $path
        current Directory is $cwd
        endtext

      • % cat myenv
  • 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
    • Background의 작업들의 상태를 보여줌
  • 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
      • -l : signal의 목록 제공
      • -9 : 무조건 종료시키는 강력한 명령
      • 예) % man ps &

        % ps
        % jobs
        % kill [PID] or [%JOBID]
        % ps
        % jobs

UNIX의 활용 - VI Editor
  • VI
    • UNIX에서 주로 사용하는 화면지향 편집기
  • Terminal 설정
    • % vi 라고 입력했을 때 에러(error)가 나는 경우
    • csh(C Shell) : .login file에 setenv TERM vt100
    • sh(Bourne Shell) : .profile file에 TERM=vt100; export TERM
  • Mode
    • 명령 모드 : 명령을 입력할 수 있는 모드
    • 입력 모드 : ‘I’를 입력하여 입력이 가능한 모드
  • vi를 이용한 문서 작성
    • % vi [작성할 file name]
  • 커서의 이동
    • 문자 단위의 이동
      • 대부분의 터미널에서는 화살표키로 이동 가능
      • 만약 화살표카가 지원되지 않는 경우는 다음의 키를 이용

    • 줄단위의 이동
      • 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에서 마지막 명령을 반복하라는 뜻이다.
  • 검색 치환
    • 검색
      • /문자열 : 문자열을 앞으로 검색한다.
      • ?문자열 : 문자열을 뒤로 검색한다.
    • 치환
      • [범위]s/old/new/[cgi] : old를 new로 치환해 준다.
      • [범위] : 숫자, $, .(현재 위치)등을 지정한다.
      • [cgi] : c는 변경시 변경여부를 묻는 플래그
      • g는 한 줄의 모든 것을 변경하는 것이고 I 는 검색시 대소문자를 구분하지 않는다.
      • 예) 10,$s/old/new/g : 10줄에서 파일의 끝까지 수행

        g/foobar/s/bar/baz/g : 전체 file에서 “foobar”를 찾아서 “foobar” 중 bar를 baz로 치환한다.

  • 블록 명령
    • 블록을 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로 지난번 로그인의 마지막 명령만을 기억하고 있다.
      • 예) & histrory
    • 명령들의 목록을 작성하기 위해서는 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명] [축약할 명령어]
      • 예) DOS명령어 dir를 쳐서 ls -l 의 출력이 나타나게 하는 예제

        % alias : 현재 자신의 alias 상황을 보여줌
        % alias dir ‘ls -l’
        % dir

  • 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에 저장합니다.
    • 환경 변수 값 알아보기
      • % echo $변수 name
    • 일반 shell 변수 값 지정
      • % set 변수명=값
    • 보통 값을 지정할 때 "="기호 사이에 빈칸이 포함되어서는 안되나 ' 기호나 " 기호를 사용하면 가능하다.
    • 환경 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 보내기
      • % mailx [받을 사람 ID]

        Subject : 보내고자 하는 메시지의 제목

      • 미리 file로 작성한 내용을 메일로 보내고자 할 때
        • % mailx -s “메일 제목” [받는 사람 ID] < 보낼 filename
      • 메시지를 입력하면서 사용할 수 있는 명령
        • ~- : 도움말
        • ~b : 메시지를 여러 명에게 복사해서 보낼 때 사용. 받은 사람들은 공동 수신자를 알 수 없음
        • ~c : 메시지를 여러 명에게 복사해서 보낼 때 사용. 받은 사람들이 공동 수신자를 알 수 있음
      • 메일 환경 설정 파일(.mailrc)

System Administraion
  • 시스템 관리
    • 시스템 관리자가 UNIX System이 원할하게 작동되도록 하기 위해서 UNIX System상에서 수행하는 모든 관리작업들
    • 전반적인 시스템 관리자의 책임 작업들
      • 시스템 구성과 관련되는 작업
        • 커널의 구성
        • 주변장치의 구성과 설치
        • 새로운 소프트웨어 설치
      • 파일 시스템 관리
        • 파일 시스템의 무결성 유지 보수
        • 디스크의 사용도 점검
        • 디스크 공간의 배정
        • 파일 시스템의 생성, mount, unmount
      • 반복적인 작업의 자동화
        • cron 유틸리티의 활용
    • 사용자 계정(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
      • telinit0
    • Single-user state
      • telinit1
    • Multi-user state
      • telinit 3
    • Shutdown and Reboot
      • telinit 6

※ 많은 사용자가 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으로 구성됨

  • Devices Naming Conventions for Disk and Tapes
    System SCSI DISK Tape Drive NR Tape
    Solaris /dev/[r]dsk/cCtAdNsP /dev/rmt/N /dev/rmt/Nn
    HP-UX /dev/[r]dsk/c201dNsP /dev/rmt/Nm /dev/rmt/Nmm
    IRIX /dev/[r]dsk/dskCdNsP /dev/tape /dev/ntTape
    Sun OS /dev/[r]sdNP /dev/rmtN /dev/nrmtN
    • C : Controller Number
    • A : SCSI Targer Number
    • N : Device or LUN Number
    • P : Slice or Disk Partition Number
  • Metadevice
    • Disksuit Tool을 사용해서 여러 개의 Partition을 합쳐서 대형 Disk를 만드는 것

  • 디스크 추가
    • UNIX System에 새로운 Disk를 추가하는 과정
      • Disk를 컴퓨터에 접속
      • Disk 접근을 위한 장치 파일 생성
      • Disk formating
      • Disk partitioning and labeling
      • UNIX File system의 구성
      • File system mounting
      • File system 무결성(integrity) 검정
    • 장치화일의 생성
      • 새로운 디스크에 접근하기 위해서는 먼저 이 디스크를 가르키는 파일을/dev 디렉토리에 생성
      • Disk를 SCSI Bus에 접속시킬 경우 UNIX가 자동적으로 장치화일 생성
      • 그 밖의 경우는 시스템 공급업자의 절차에 따라 생성시키면 됨
    • Disk Formating
      • 새로운 Disk 표면에 미리 정해진 형식으로 표시를 하여 데이터를 구조화시키는 작업
      • 이 과정을 통해 주소에 대한 timing mark가 기록됨
      • Disk 총 용량의 약 10%가 format과정에서 사용됨
      • SCSI Disk의 경우는 보통 미리 format이 되어져 있음
    • Disk Partitioning and labeling
      • Partitioning : Format된 Disk를 독립된 데이터 영역들로 나누는 과정
      • Partition은 dump를 보다 용이하게 하며 사용자들이 다른 디스크 공간을 침범하는 것을 방지하고 성능을 향상시킴
      • Partition table은 디스크에 대한 그 밖의 정보들과 함께 label이라는 디스크 상의 레코드에 기록된다.
      • Label은 보통 Disk의 처음 한 두 블록을 차지함
      • 하나의 디스크는 보통 최대 8개의 Partition을 가지질 수 있음.
      • 각 Partition은 소문자 a부터 h로 표시한다.
      • 전통적으로 a Partition은 root Partition, b Partition은 swapping을 위하여 사용된다.
      • Partition c 는 전체 디스크를 관리하기위해 사용됨
      • Partition d에서 h까지는 관리자가 임의로 할당 가능함
      • System V Release 4 UNIX에서는 Partition을 slice라고 부르며 기능도 약간 다르다.
      • 최대 8개의 slice가 있으며 각 slice들은 0에서 7까지의 번호로 표시함
      • Slice 0, 1, 2는 Partiton a, b, c에 대응된다.
      • Slice 3에서 6까지는 다른 운영체제의 화일들을 위하여 사용된다.
      • Slice 7은 단지 사용자 화일들만을 포함하는 영역을 나타낸다.
  • Physical Disk Partition Layout

    • Disk Partition
    Patition
    Number
    Name Function
    0 root Root Partition
    1 swap Swap Partition. 물리적 메모리가 부족할 때 사용
    6 usr Usr Partition. Root 나 System이 주로 사용하는 디렉토리
    7 (none) The entire disk except the volume header and xflog Partition
    8 volhdr Volume header
    9 (none) Reservation Partition
    10 volume The entire disk, Including the Volume header
    • UNIX File system 구성
      • 하드 디스크 Partition이 끝난 후 바로 UNIX 화일들을 저장할 수 있는 것이 아니다.
      • mkfs 또는 newfs command를 사용하여 Partition 또는 slice에 File system을 구성해야 한다.
      • newfs command를 수행하면 Disk의 그 영역에 존재하던 데이터는 지워지고 디렉토리 구조의 골격이 형성된다.
    • newfs command
      • 형식 : newfs [option] [mkfs-option] block-special-file
      • 기능 :
        • newfs는 mkfs command의 friendly front-end이다.
        • newfs는 표준 장치들의 특성에 관한 정보가 기록되어 있는 /etc/disktab 파일을 탐색하여 디스크 유형의 sector 수를 검색한 후 mkfs를 호출(fork)한다.
        • mkfs 프로그램은 block-special-file에 기록함으로써 파일 시스템을 구축함
        • mkfs는 root 디렉토리와 lost+found 디렉토리로 이루어진 파일시스템을 구축함
        • 만약 File System이 root Partition이면 최초의 16 sector에 bootstrap 프로그램을 설치함
    • option
      • -n : bootstrap program을 install 하지 않음
      • -N : file system을 실제로 만들지 않고 file system parameter를 출력함
      • -v : 모든 발생 가능한 사건 메시지 출력할 것
    • mkfs-options
      • -b : block-size 새로운 file system의 블록 사이즈. 409 또는 8192 byte 가능
        8129 byte가 default임
      • -m : free-space% 일반 유저를 위해 예약한 공간의 비율(default - 10%)
      • -c : #cylinder 실린더 그룹에 대한 실린더 수 (default - 16)
      • -i : i-size inode 개수 (default - 2048)
      • -f : frag-size fragment size (default ? 1024), 최대 블럭 사이즈
    • File system mounting
      • File system이 사용 가능하려면 mount가 되어야 한다.
        • mount는 file system 을 root file system의 일부로 부착하여 계층 구조화 시키는 작업
        • 한번 file system이 mount 되면 이 file system의 화일들은 root file system 의 일부인 것처럼 접근이 가능하다.
        • file system은 mount과정의 반대, 즉 unmount를 통해 root file system과의 연결을 단절시킨다.
    • mount, unmount command
      • 형식
        • % mount [options] [block-special-file directory]
        • % unmount [options] block-special-file | directory

      ※ 부팅시 자동으로 자동으로 mount를 시키도록 하기 위해서는 기종에 따라서 /etc/vfstab file이나 /etc/fstab file에 mount 명령 첨가하면 된다.

  • General File System Concepts
    Disk mount

    % whoami : mount는 root만 가능함
    % cd / : root 디렉토리로 이동
    %mkdir /d2 /d3 : mount point 생성
    % mount /dev/dsk/c0t1d0s0 /d2
    : Disk2를 /d2에 mount
    % mount /dev/dsk/c0t2d0s0 /d3
    : Disk3를 /d3에 mount
    % cd /d2 : Disk2로 이동
    % cd /d3 : Disk3로 이동
  • File System Mouting and Unmounting
    Disk mount 명령

    % mount /dev/rdsk/dks0d2s7 /proj

    Disk mount를 해제 명령

    % unmount /proj
  • UNIX Directory Structure

  • UNIX 주요 디렉토리의 역할과 기능
    • / (root)
      • Boot directory. IRIX의 경우는 Kernel이 들어있는 Directory(/unix)
    • /dev
      • 컴퓨터의 가장 중요한 부분 중 하나인 Device를 관리하는 Directory
      • 디스플레이 및 터미널, 키보드를 비롯한 UNIX System의 모든 자원들을 집중 관리하는 곳이다.
      • 모든 디바이스들은 dev 디렉토리에 파일의 형태로 독립적으로 존재한다.
    • /etc
      • UNIX는 관리는 사용자 계정, File system, security, Device Drivers, 하드웨어 구성 등의 관리를 포함하여 매우 복잡할 수 있다.
      • 이러한 모든 관리상에 필요한 파일과 정보를 저장하는 디렉토리이다.
      • 참고로 유저를 관리하는 ‘passwd’파일도 바로 이 디렉토리에 존재한다.
    • /etc/config
      • System configuration file 들이 담겨있는 Directory
    • /lib
      • UNIX System에서 사용되는 함수나 절차적 라이브러리를 보관하는 장소
    • /lib32
      • 컴퍼일러에 의해서 참조되고 사용되는 binaries, library file 이 담겨있음
    • /lib64
      • 64bit system을 사용하는 Compiler에 의해서 참조되고 사용되는 binaries, libraries file 이 담겨있음
    • /lost+found
      • 파일이 어떤 종류의 문제나 오류로 부터(fsck명령에 의해) 복구되었을 때 커널 파일 시스템 내의 올바른 위치를 알아내지 못할 때 저장되는 장소
    • /proc
      • 현재 수행중인 모든 Process들의 이미지들이 보관된 Directory
    • /sbin
      • Commands needed for minimal system operability
    • /stand
      • Kernel image가 저장되어 있는 Directory. Standalone Utilities(fx, ide, sash)
    • /tmp
      • UNIX에서 많이 프로그램에 의해 사용되는 일시적인 file 저장 장소
    • 임시 작업 Directory
      • Reboot시에 없어지는 임시 파일들
    • /tmp/mnt
      • Automount File system의 mount Point
    • /usr
      • 자체적으로 만든 프로그램, 사용자와 시스템 관리에 필요한 명령들, 공유 라이브러리들
      • UNIX System의 일부분들이 서브 Directory형태로 존재함
      • 어떤 시스템의 경우는 monut point로 사용되기도 하는 Directory
    • /usr/bin
      • 일반적으로 많이 사용되는 실행파일들을 저장
      • 초기의 UNIX에서 모든 실행 파일들을 일괄적으로 보관하기 위해 사용되었다.
      • 하지만 점점 UNIX에 첨가되는 실행파일이 많아짐에 따라 여러 Directory로 분리되어 저장하게 되었다.(/bin, /usr/bin)
    • /usr/include
      • 표준 System과 Program Library들에 대한 Interface를 정의한 C 언어 header file들이 들어 있음
    • /usr/man
      • 온라인 매뉴얼 페이지가 들어있는 Directory
    • /usr/lib
      • 표준 유닉스를 지원하는 파일들이 있는 Directory
    • /usr/local
      • 지역적인 소프트웨어(관리자에 의해 설치된 소프트웨어)
    • /usr/local/adm
      • 지역적인 계정과 log 파일들
    • /usr/local/bin
      • 지역적인 실행 파일들
    • /usr/local/etc
      • 지역적인 시스템 구성 파일과 명령어들
    • /usr/local/sbin
      • 지역적인 시스템 유지 명령어들
    • /usr/local/src
      • /usr/local/*을 위한 원시 코드들
    • /usr/share
      • 다양한 응용프로그램의 공유파일들
    • /var
      • 시스템의 파일들이나 로그 기록을 관리하는 파일이 있는 Directory
    • /var/adm
      • 계정 파일들, 자원의 사용법을 기록한 파일들이 있는 Directory
    • /var/spool
      • 프린터, UUCP, 메일 등을 모아서 보관
    • /var/tmp
      • 임시 저장 공간(reboot 해도 없어지지 않음)
    • /var/ucb
      • 버클리 유틸리티와 프로그램들
    • /var/x11
      • X11 coniguration files
    • /var/yp
      • NIS Command files
    • /kernel
      • 커널을 설치하는데 필요한 파일들(Solaris)

      ※만약 /sbin이 존재한다면 일반적으로 /usr/sbin으로 심볼릭 링크되어 있다.

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
    • Passwd file
      • UNIX는 system의 모든 사용자 정보를 /etc/passwd file에 기록한다.
      • 저장된 정보는 모두 7가지로 ‘:’으로 구분한다.
      • 각각의 정보는 다음과 같다.
        • Username : 사용자가 사용하는 login-ID
        • Password : 암호화 되어 기록된다. /etc/shadow에 저장되기도 한다.
        • User ID : 사용자의 ID로 음수가 아닌 정수여야 한다. 0은 root 사용자
        • Group ID : 사용자가 속한 Group ID. 사용자는 반드시 하나 이상의 Group에 속해야 한다.
        • Full-name : 보통 사용자의 실제 이름을 나타낸다.
        • Login directory : 사용자의 home directory
        • Login shell : 사용자가 사용하는 shell
    • Password file을 관리할 때 주의 사항
      • 일반 사용자는 UID 0을 갖지 않아야 한다.
      • 일반 사용자는 GID 0을 갖지 않아야 한다.
      • Password란은 공백이어서는 안된다.
      • Password file에는 주석문(#)이 사용되지 않는다.
      • Password file에는 공백 라인이 있어서는 안된다.

      ※ System이 제공하는 Password file checking program : /etc/pwck

    • Group file
      • UNIX System은 Group에 관한 정보를 /etc/group file에 저장한다.
      • 저장된 정보는 다음의 네 가지이다.
      • Group name : 그룹의 이름
      • Password : 보통 사용하지 않음
      • Group ID : 그룹의 실제 ID
      • Member : 그룹의 사용자 목록. ‘,’로 구분한다.

      ※ System이 제공하는 Group file checking program : /etc/grpck

Administration Commands
  • Monitoring Processes
    • 다중 사용자 운영체제인 UNIX의 특징 때문에 프로세스의 관리는 시스템관리자의 중요한 업무이다.
  • ps(report process status)
    • ps명령은 process의 상태를 보여주는 명령으로 daemon 등의 여러 process의 상태를 확인하는 데 요긴하게 쓰인다.
    • 형식 ps [-aSdeflcj] [-o format] [-t termlist] [-u userlist] [-U userlist][-G grouplist] [-p proclist] [-g pgrplist] [-s silist]
    • Process를 관리할 때는 다음의 값들이 중요하게 이용됨
      • PID : process의 식별번호
      • PPID : 해당 process를 생성한 parent process의 PI값
      • UID : 해당 process에 접근할 수 있는 User ID
      • GID : 해당 process에 접근할 수 있는 Group ID
    • Process들이 가질 수 있는 상태(state)들
      • Running (O) : 현재 실행되고 있는 상태
      • Runnable (R) : 실행 가능한 상태(process가 queue에 들어 있을 때)
      • Sleeping (S) : 어떠한 event가 완료되기를 기다리는 상태
      • Zombie (Z) : process는 종료했지만 parent는 이를 기다리지 않는 상태
      • Stopped (T) : 정지되어있는 대기 상태 (실행 가능하지 않음)

      ※ 이들을 확인하려면 ps 명령의 -e, -f, -l option을 사용하면된다.

  • kill(terminate or signal processes)
    • process를 완전히 종료시키고자 할때 사용하는 명령
    • 형식
      • kill -s signal pid
      • kill -l [exit_status]
      • kill [ -signal ] pid
    • kill 명령에서 사용되는 signal
      • 1 HUP : Hangup(종료)
      • 2 INT : Interrupt(중지)
      • 3 QUIT : Quit(탈출)
      • 9 KILL : Kill(무조건 중지)
      • 15 TERM : Software Termination(정상 종료)
    • 다음의 세 명령은 PID 100번을 무조건 종료하라는 똑같은 의미이다.
      • kill -9 100
      • kill -s kill 100
      • kill -s KILL 100

      ※ kill 명령은 반드시 정상적인 방법으로 종료할 수 없을 때에만 사용해야 한다.

    • pkginfo
      • 현재 자신의 시스템에 설치되었있는 소프트웨어의 리스트를 보여줌
      • Super user가 옵션을 가지고 사용할 경우 설치된 소프트웨어를 삭제할 수도 있다.
      • IRIX
        • Version [-vFV] remove name

    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
      • -a : 모든 내용을 보여주는 option
  • hostname
    • 형식 hostname [-s] [nameofhost]
      hostname newhostname
    • 기능
      • 뒤에 아무런 내용없이 hostname을 실행하면 현재 자신의 시스템의 이름을 보여줌
      • 그러나 root가 hostname newhostname이라고 입력하면 시스템의 이름이 바뀌게 됨
  • hostid
    • 형식 hostid
    • 기능
      • 자신의 장비의 고유 ID를 보여줌
      • 이것은 장비 생산 업체에서 부여한 고유한 ID로서 유일함
      • UNIX OS에서는 대부분의 사용 가능한 상업적인 소프트웨어들이 위의 명령을 가지고 얻은 고유 ID로서 소프트웨어 라이센스를 만들어 낸다.
      • 상업적인 소프트웨어를 사용하기 위해서는 위 명령어를 가지고 얻어진 ID를 소프트웨어 판매회사에 보내어 라이센스를 받아야 함
    • IRIX
      • sysinfo [-s][-v][-vv]
  • eeprom (ROM 모니터 패스워드)
    • 형식 eeprom
    • 기능
      • 시스템을 다른 사람이 수동으로 부트하지 못하게 하기 위하여 ROM Program에 Password를 할당할 수 있음
    • IRIX
      • nvram
      이것은 매우 주의해서 사용해야 한다. 만약 이 패스워드를 잊어버리면 하드웨어에 손을 대야 복구가 가능하게 때문에 조심해서 사용해야 한다.
  • 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 한다.
        • % ./configure
      • Compile 한다.
        • % make
      • Install 한다.
        • % make 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에 대한 자세한 정보를 알아내는 방법
      • % pkginfo -l <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를 시스템에서 제거하는 방법
      • % pkgrm <package-name>
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
        • 매일 같은 수준번호로 dump
      • total dump이래 변경된부분만 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의 변경
      • super user에 의해 변경 가능
    • 사용 예
      • [bravo]hostname
      • bravo
  • 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

    • 네트워크 접속 하드웨어에 관한 정보
      • netstat -i [네트웍 인터페이스]
      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
    • 데이터 버퍼
      • netstat -m
      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
    • 경로 결정표를 수동으로 변경하는 명령
      • 관리자에 의해 수행
      • 경로 결정 daemon process의 실행을 중지
    • 사용 형식

      route add | delete 목적지, 게이트웨이, 홉 수

      • add: 경로 결정 표에 한 행을 첨가
      • delete:경로 결정 표에 한 행을 삭제
  • 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 호스트 [제한시간]
      • 제한 시간은 기본적으로 20초
    • 사용 예
      • [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. 이상복,음호식 공저. 도서출판 기한재
  • 인터넷 사이트