유닉스   article search result : 1
2007/05/17

자료출처 = 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 (2