June-Hyun, Moon imp@4imp.ac.kr http://www.4imp.com UNIX Administration June-Hyun, Moon imp@4imp.ac.kr http://www.4imp.com.

Slides:



Advertisements
Similar presentations
Linux1 Linux 개요 Linux 방문하여 홈페이지 등록하기 Vi 편집해 보기. Linux2 개요  Linux 란 ? 1991 Linus Benedict Torvalds 가 만든 Unix 의 한 버전 GNU(GNU is Not Unix) » 프로그램이나 정보의.
Advertisements

SPARCS 10 이 가 영 기본 UNIX 명령어. 일단 로그인 ! Linux login 시 계정을 입력하거나 root 를 입력 Root -> # 일반 사용자 -> $ 패스워드 : echo 기능을 꺼서 볼 수 없다. 대소문자 구분 패스워드 처음 설정 시 : ~$ passwd.
쉘 스크립트와 cron coearth, george.
Managing Filesystems, Swap Space, and Devices
유닉스 OS Installation Solaris 2.6 설치 부팅 설치 후 작업들 Sun patches 설치
시작부터 끝까지 진지한 궁서체로 진행하는 완벽한 주입식의 하드코어한 리눅스/장난감 세미나
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
1장 유닉스 소개.
FTP 09 SPARCS 박철웅 [dothack].
4. 시스템 관리 기본 naldo.
Linux University of Seoul Computer Science Park Jong wook
컴퓨터 네트워크 실습.
운영체제 설정과 취약점 인터넷공학/컴퓨터공학 이수백/허성욱.
제6장 FUSING.
Unix(Linux) shell programming
크로스 컴파일 환경 구축.
NFS, FTP coearth, george.
디렉토리 다루기 ㅎㅎ 유닉스 파일 시스템 현재 디렉토리 확인 : pwd 디렉토리 이동 : cd
UNIX의 중급 명령어 UNIX의 고급 명령어 연습 문제
Chapter 11 The C Shell.
Toad for Oracle 설치 방법.
Chapter 16 백업 및 복구 Solaris 2 . ufsdump 와 ufsrestore
Minicom,tftp,nfs설정,vnc설정
FUSING.
 13장. 배시쉘 프로그래밍.
소개: Unix란 무엇인가? 숙명여대 창병모 2009/09.
[beginning] Linux & vi editor
유닉스 이론과 실습 √ 원리를 알면 IT가 맛있다 컴퓨터정보계열 이광규.
UNIX Unbounded A Beginning Approach
리눅스 커널의 이해 중에서 1장. 소개 이원구 네트워크 실험실.
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
목차 커널의 개념 및 기능 커널 포팅 램디스크.
Development Environment of Embedded System : part 1
부 록 Ubuntu 설치.
Linux/UNIX Programming
UNIX Unbounded A Beginning Approach
컴퓨터 네트워크 실습.
임베디드 시스템 개론 3주차 Embedded System..
Embedded System Porting (2)
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
제2장 유닉스/리눅스 사용.
리눅스 기본 명령어 기본 명령어 명령어 기능 사 용 예 date 날짜 및 시간을 확인하고 생성.
5. 네트워킹 사용자 표시 : users/ rusers/who/w users 지역 호스트 상에 있는 사용자의 간단한 목록 표시
Internet Protocol and Programming
DataStage 운영자 지침서 Operator’s Guide
20. 시스템 관리. 수퍼 유저(The Superuser) 시스템 구성(System Configuration)
운영체제 (Operating Systems)
Chapter 10. 파일 시스템 인터페이스(File System Interface)
제5장 CPU스케줄링(CPU Scheduling)
6. 파일 관리. pwd(print working directory)와 cd(change directory) ls(list)
제4장 유닉스 쉘 숙명여대 창병모 2011 가을.
SYSMAC GATEWAY 간이 매뉴얼.
Boot PROM.
Swap 추가, fsck.
4장 서버 구축을 위해 알아야 할 핵심 개념과 명령어
유닉스 개요 및 기본 사용법 ㅎㅎ 유닉스 개요 유닉스 시스템 접속 방법과 명령 사용법.
Internet Protocol and Programming
User Datagram Protocol (UDP)
JFS operation HP Korea / Operations JFS operation.
Itbank solaris Pm 4:00 class 김 정 훈
editing program files with vi 기본적인 Linux commands
6장 콘 셸 뇌를 자극하는 Solaris Bible.
Chapter 12 파일 시스템 이해 Solaris1 . 파일 타입
Command line tools 한국어 정보의 전산 처리
8. 리눅스의 내부 군자삼락 [君子三樂] 청출어람이청어람 [ 靑出於藍而靑於藍 ] Why Linux ?
Internet Protocol and Programming
제4장 유닉스 쉘 숙명여대 창병모
제8장 C 쉘 창병모
Linux/UNIX Programming
한국 휴렛팩커드/고객지원사업본부/IT 기술사업부 박기영
Presentation transcript:

June-Hyun, Moon imp@4imp.ac.kr http://www.4imp.com UNIX Administration June-Hyun, Moon imp@4imp.ac.kr http://www.4imp.com

목 차 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의 정의 UNIX의 특징 컴퓨터에서 프로그램을 실행시키고 자원을 관리하는 운영체제의 일종 주로 대형 서버나 Workstation 에서 사용됨 System V계열과 BSD계열이 있음 PC 에서 사용하는 Linux역시 UNIX 계열의 OS임 UNIX의 특징 Multi-user : 여러 사용자가 사용 가능하다. Multi-tasking : 사용자가 여러 프로그램을 동시 실행 가능하다. Multi-choice : 다양한 사용자 인터페이스 지원된다. 이식성(Portability)이 좋다. 컴퓨팅 환경의 확장이 용이하다.

UNIX 소개(cont.) 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 login 과정 Consol이나 Terminal을 이용해서 UNIX server에 접속하는 과정 UNIX가 Multi-user환경이기 때문에 각각의 사용자들의 정보를 보호하기 위함 login 과정 telnet <자신이 접속하고자 하는 서버 이름> 예) telnet bravo login: <사용자 계정> 예) login : imp Password: <사용자 계정 비밀번호> 예) password : (활성화 되지 않음 )

UNIX의 기본 – login (cont.) UNIX OS 버전 login 프롬프트 Password 프롬프트 마지막 종료시간 Root 메시지 자신의 banner 메시지 초기 프롬프트 마지막 종료시간 접속 주소, 서버 환경

UNIX의 기본 - Shell Shell Shell의 종류 DOS의 command.com과 비슷한 역할 프로그램으로 명령을 입력 받아 이를 해석하고 처리해 주는 역할을 수행 UNIX는 Multi-choice 환경으로 사용자가 선택 가능함 Shell의 종류 C shell – 현재 가장 많이 사용됨 Bourne shell – Linux의 기본 shell Korn shell Bourne again shell Tcsh

UNIX의 기본 – Shell(cont.) 자신의 shell 알아보기 사용자 환경 설정 파일(C 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 내용 .cshrc

UNIX의 기본 - 환경 설정(cont.) 기본적 .login file과 .profile내용 .login .profile

UNIX의 기본 – 기본 명령어 passwd (change login password) exit, logout whoami 패스워드를 바꾸는 명령 영문, 숫자를 섞어서 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를 알려줌

UNIX의 기본 – 기본 명령어(cont.) cal [month] [year] env pwd 자신의 설정된 환경 변수들을 보여줌 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]

UNIX의 기본 – 기본 명령어(cont.) option option의 중복 사용 가능 -a : 숨겨진 파일(‘.’으로 시작하는 파일)까지 보여줌 -l : file에 대한 자세한 내용을 보여줌 -rw-r-- r-- 1 imp student 3059 8월 12일 12:24 pr 허가 상태 링크수 소유자 Group 크기 생성된 날짜 시간 file명 -R : 하위 directory의 내용까지 보여줌 root directory에서는 사용하지 말 것. -s : file의 대략적인 크기를 보여줌 -t : 최근의 사용순서대로 정렬하여 보여줌 (최근에 사용한 file을 찾을 때) option의 중복 사용 가능 예) % ls –alr 숨겨진 file 까지 하위 directory의 내용까지 자세하게 보여줌

UNIX의 기본 – 기본 명령어(cont.) date (date) : 시스템의 날짜와 시간의 표시 형식 date [MMDDhhmm[YY]] date [+format] 기능 시스템의 현재 시간과 날짜를 표시한다. Super-user는 시간과 날짜를 변경시킬 수 있다. +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

UNIX의 기본 – 기본 명령어(cont.) time (time) : 커맨드의 실행시간 표시 예) % 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

UNIX의 기본 – 기본 명령어(cont.) 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 사용 시 킬로바이트 단위로 보여줌

UNIX의 기본 – 기본 명령어(cont.) chmod (change mode) : 파일 액세스 모드의 변경 형식 chmod mode files(s) 기능 파일의 사용 허가권(모드)를 변경한다. option mode u g o a user group other all(ugo) + add permission - remove permission = reset permission permission set number 0 none 1 execute 2 read 4 write

UNIX의 기본 – 기본 명령어(cont.) access permission 예) chmod 644 test 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

UNIX의 기본 – 기본 명령어(cont.) umask (user mask) : 파일 생성시 허가권 요청에 대한 마스크 설정 형식 umask mask 기능 파일을 생성할 때 사용자가 요청하는 허가권에 대하여 시스템이 제한을 가하는 mask값을 설정한다. 인수를 정하지 않으면 파일 생성 허가권의 현재 값을 표시한다. 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

UNIX의 기본 – 기본 명령어(cont.) chown (change file ownership) 예) % 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* ../

UNIX의 기본 – 기본 명령어(cont.) mv (move file) rm (remove) 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를 삭제하는 명령

UNIX의 기본 – 기본 명령어(cont.) chsh (change 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]

UNIX의 기본 – 기본 명령어(cont.) cat (concatenate and display files) 별로 크기가 크지 않은 text file을 볼 때 사용 예) % cat test.file option % cat –s test.file : 공백라인을 삭제하고 보여줌 % cat –n test.file : 화면에 line number를 붙여줌

UNIX의 기본 – 기본 명령어(cont.) more (browse or page through a text file) file의 내용을 볼 때 사용하는 명령. file의 내용을 한 화면씩 보여줌. Space-bar를 누르면 다음 화면이 스크롤 됨. Enter-key를 누르면 한 줄씩 스크롤 됨 예) % more [option] [filename] option -s : 공백 line을 제거하고 보여줌 +n : ‘n’ line부터 보여줌 +/문자열 : 그 문자열이 있는 곳부터 보여줌 q : 종료 v : 현재 line에서 vi 편집기를 시작함 = : 현재의 line number를 알려줌 Ctrl+B : 한 화면 전으로 스크롤 됨

UNIX의 기본 – 기본 명령어(cont.) 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 출력 방향을 변경시킴 pipe 한번에 여러 가지 명령을 처리할 수 있음 출력 방향 변경 (‘>’) 우선 file을 생성. ‘%’은 프롬프트임. % touch test : 빈 file 생성 % cat test : 아무것도 나타나지 않음 % ls –al > test : 화면상엔 변화가 없음 % cat test : ??

UNIX의 기본 – redirection & pipe(cont.) 출력 방향 변경 추가 (‘>>’) % ls –al >> test : 역시 화면 변화 없음 % cat test : test file에 내용 추가됨 % rm test* : test로 시작하는 모든 파일 지움 cat을 이용 edit하는 방법 % cat > test 이것은 test입니다. : 문자열 입력 후 enter ^Ctrl-D % cat test : ?? cat을 이용한 문자열 추가 방법 % cat >> test 이번엔 추가입니다. : 문자열 입력 후 enter % cat test : 내용이 추가됨

UNIX의 기본 – redirection & pipe(cont.) 입력 방향 변경 (‘<‘) 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

UNIX의 기본 – redirection & pipe(cont.) uniq (report or filter out repeated lines in a file) 중복된 line, 공백 들을 제거하고 출력하는 명령 option -d : 반복되는 line만 출력 -c : 중복된 횟수만 출력 -u : 반복되지 않은 line만 출력 % cat >> test Hello Enter ^D (Ctrl+D) % cat test % uniq test

UNIX의 기본 – Meta Characters 다른 문자와는 다르게 독립적으로 다른 의미를 가지고 사용되는 문자 대표적 meta-characters * ? [ ] : wild card characters > >> < | : redirection characters & : background job characters $ : 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번째 필드로 정렬한다.

UNIX의 기본 – 추가 명령어(cont.) spell nl (line numbering filter) % 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

UNIX의 기본 – 추가 명령어(cont.) option -ba : 공백에도 번호를 붙임 -bp문자 : 문자가 있는 line만 번호를 붙임 -s문자 : 번호와 line을 지정한 문자로 분리해 줌 % ls –al > test % echo ” ” >> test % ls –al >> test % nl test % nl –ba test % nl –bptest test % nl test –s번째

UNIX의 기본 – 추가 명령어(cont.) banner (make posters) 입력한 문자를 banner style로 찍어준다. 예) % banner Good-morning! bc (arbitrary precision arithmetic language) UNIX에서 제공하는 간단한 계산기(4칙 연산) 예) % bc % bc 1+2+3+4+5+6+7+8+9 <enter> 45 : 정답 종료는 ^Ctrl-D 입력

UNIX의 기본 – 압축 명령어 tar (create tape archives, and add or extract files) % tar cvf [만들 filename.tar] [압축하고자 하는 대상] File을 풀 때 % tar xvf [풀고자 하는 filename] [풀어 놀 directory] File을 풀지 않고 내용만 보고자 할 때 % tar tvf [보고자 하는 filename]

UNIX의 기본 – 압축 명령어(cont.) compress uncompress File 압축 명령 예) % compress [filename] : filename.Z가 생성됨 % compress temp.tar : temp.tar.Z라는 file이 생성됨 option -v : 압축률을 보여줌 예) % compress –v temp.tar uncompress File 압축 해제 명령 예) uncompress [압축된 filename] : 원래의 file이 됨.

UNIX의 기본 – 정보 검색 명령 grep (search a file for a pattern) 예) % 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을 쓰는 사용자수 검색

UNIX의 기본 – 정보 검색 명령(cont.) echo (echo argument) 입력된 명령을 반향(반복)한다. 예) % echo [문자열] % echo * : ls와 같은 기능을 함. ‘*’는 임의의 문자를 의미 % echo ? : ls ? 와 같음 ‘?’는 한 문자를 의미 % echo t* : t로 시작하는 모든 문자열

UNIX의 기본 – 정보 검색 명령(cont.) << (hear current) <<는 >>와 같은 흐름 재지정 명령(redirection)이다. <<는 입력을 모사(simulate)하는데 쓰인다. 사용 예 % cat –n << endtext > myenv : text의 마지막에 endtext를 입력 my Home Directory is $home my Path is $path current Directory is $cwd endtext % cat myenv

UNIX의 기본 – 정보 검색 명령(cont.) 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

UNIX의 기본 – 정보 검색 명령(cont.) 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는 중복된 수

UNIX의 기본 – 정보 검색 명령(cont.) $0는 line전체를 가르킴 사용 가능한 특수문자 “\t” : tab “\n” : 개행 문자 예) % ls –lF | awk ‘{print $6 “\t” $10}’ awk 프로그램은 language처럼 변수의 사용이 가능함 % ls –l | awk ‘{total = total+$6; print total “\t” $10}’ % ls –l | awk ‘{total += $6; print total “\t” $10}’ 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}’

UNIX의 기본 – 정보 검색 명령(cont.) 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 검색

UNIX의 기본 – 정보 검색 명령(cont.) 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의 기본 – 압축 명령어(cont.) 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” : 현재 directory 밑에 .c로 끝나는 file 검색 % find /usr1 –user “imp” : file의 소유자가 imp인 모든 file 검색

UNIX의 기본 – 작업 제어 명령 Process UNIX에서 실행 중인 모든 프로그램 OS차원의 process scheduling을 지원함 각 process는 process ID(PID)를 가지고 있고, 또 상태를 가지고 있음 UNIX의 process는 계층적 구조를 가지고 있음 현재 사용되는 있는 process는 foreground라고 하고 잠시 중단되거나 뒤편으로 넘겨논 상태의 모드를 background라고 함 예) % man fg : fg에 대한 매뉴얼 페이지를 보여주는 명령 Ctrl+Z : 작업 중단 % jobs : 현재의 백그라운드 작업 내용을 보여주는 명령 [1] +중단됨(사용자) man fg % fg : 다시 foreground로 작업이 넘어옴

UNIX의 기본 – 작업 제어 명령(cont.) ^Z(Ctrl+Z)를 누름으로써 작업을 백그라운드로 전환할 수 있다. jobs명령으로 작업의 내용을 볼 수 있음 fg명령으로 다시 foreground로 다시 작업을 전환할 수 있음 사용자의 입력을 요하거나 화면에 출력을 해야 하는 process들은 background에서는 실행이 중지됨 사용자의 입력이 필요 없는 경우나 잠시 실행을 중지시킬 때 background로 process를 실행시켜야 함 background에서 중지되어 있는 명령 background에서 실행시키려면 bg명령을 줌 프로그램을 background로 바로 보낼 때는 명령의 끝에 ‘&’를 줌 예) % find / -name “*text*” > test.bg & : text라는 문자열이 들어간 모든 file을 찾아 test.bg에 넣는다.

UNIX의 기본 – 작업 제어 명령(cont.) fg background의 process를 foreground로 실행함 예) % fg %[작업ID] : 작업 ID는 jobs를 실행했을 때 제일 앞에 나오는 수 bg background의 중지된 process를 실행시킴 예) % bg %[작업ID] jobs background의 작업들의 상태를 보여줌 ps (report process status) process의 상태를 보여주는 명령 option -a : 현재의 터미널과 연관된 모든 process를 보여줌

UNIX의 기본 – 작업 제어 명령(cont.) -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]

UNIX의 활용 – vi editor vi UNIX에서 주로 사용하는 화면지향 편집기 terminal 설정 mode % 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]

UNIX의 활용 – vi editor(cont.) 커서의 이동 문자 단위의 이동 대부분의 터미널에서는 화살표키로 이동 가능 만약 화살표 키가 지원되지 않는 경우는 다음의 키를 이용 줄 단위의 이동 n : 현재 행으로부터 n번째 행으로 이동 + : 다음 행의 처음으로 이동 - : 이전 행의 처음으로 이동 k j h l

UNIX의 활용 – vi editor(cont.) 단어, 문장 절 단위이동 f 문자 : 다음에 나타나는 “문자”로 이동 F 문자 : 이전에 나타나는 “문자”로 이동 ( : 문장의 처음으로 이동 ) : 문장의 끝으로 이동 ; : 같은 방향으로 다음 “문자”로 이동 { : 커서가 인접한 paragraph의 시작위치로 이동 } : 커서가 인접한 이전 paragraph의 시작위치로 이동

UNIX의 활용 – vi editor(cont.) 화면 단위 이동 ^B : 이전 화면으로 이동 ^F : 다음 화면으로 이동 ^U : 반 화면 앞으로 이동 ^D : 반 화면 뒤로 이동 z :커서의 위치를 화면의 Top으로 스크롤 z. : 커서의 위치를 화면의 중앙으로 스크롤 z- : 커서의 위치를 화면의 bottom으로 스크롤 ^L : 화면의 재 출력

UNIX의 활용 – vi editor(cont.) 삽입과 지우기, 복구, 교체 삽입 i : 현재 커서의 위치부터 삽입 a : 현재 커서의 위치 다음부터 추가 시작 A : 현재 줄의 마지막에 추가 시작 I : 현재 줄의 처음에 추가 시작 o : 현재 라인의 아래에 새로운 라인을 열어준다. O : 현재 라인의 위에 새로운 라인을 열어준다. 지우기 x : 커서 위치의 한 문자를 지운다. X : 커서 이전의 한 문자를 지운다. dd : 현재의 행을 지운다. ndd : n개의 라인을 지운다. dG : 현재 행부터 file의 끝까지 지운다.

UNIX의 활용 – vi editor(cont.) d1G : 현재 행부터 file의 시작까지 지운다. dnG : 현재 행에서 n번째까지 지운다. 복구 p : 버퍼의 내용을 현재 줄 이전에 복구한다. P : 버퍼의 내용을 현재 줄 다음에 복구한다. vi -r [작업하던 file name] : 시스템이 갑자기 꺼졌을 때 복구 명령 교체 cw : 현재 위치에서 단어 교체 cfc : 현재 위치에서 'c' 문자까지 변경 ' . ' : vi에서 마지막 명령을 반복하라는 뜻이다.

UNIX의 활용 - vi editor(cont.) 검색 치환 검색 /문자열 : 문자열을 앞으로 검색 ?문자열 : 문자열을 뒤로 검색 치환 [범위]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로 치환

UNIX의 활용 – vi editor(cont.) 블록 명령 블록을 file에 저장, 첨가 명령모드 ":" 프롬프트 상에서 : 10,20w [file name] : 블록을 file에 저장 : 10,20w >> [file name] : 블록을 file에 추가 블록 읽어 오기 : 10,20r [file name] : 10에서 20까지에 file을 읽어 현재 줄에 삽입 블록 자르기 수정을 하거나 삭제를 하면 버퍼에 그 내용을 복사 필요한 부분을 버퍼에 복사하는 것을 yank 라 함 이 내용을 나중에 다시 불러와서 사용할 수 있음 buffer에도 이름을 부여하여 블록을 저장할 수 있음. ( " 사용) "name5dd : 현재 줄에서 5줄을 삭제하고 name으로 (사용자가 부여한 이름) 버퍼에 기록

UNIX의 활용 – vi editor(cont.) 블록 복사 yw : 한 단어 버퍼에 기록 y$ : 줄의 끝까지 기록 yy : 현재 줄을 버퍼에 기록 역시 name을 주어 buffer에 기록 할 수 있다. 블록 붙이기 커서를 원하는 곳으로 이동한 후 p : 현재 커서 위치 오른쪽에 추가한다. P : 현재 커서 위치 왼쪽에 추가한다. namep : buffer에 있는 name의 블록을 현재 위치에 추가 다른 file 편집 % vi file file file file ...... 다른 file로 이동할 때는 : 프롬프트 상에서 :n 이라 입력한다. : shell 이라 치면 vi를 종료하지 않고 shell 화면으로 나갈 수 있다. 다시 vi로 이동할 때는 exit라 입력한다.

UNIX의 활용 – vi editor(cont.) vi 상태에서 :set all을 입력하면 현재 사용중인 vi의 옵션 지정상태를 볼 수 있다. 이러한 옵션은 여러분의 home directory에 .exrc란 file에 지정하지 않으면 default 값을 사용한다. 다음은 현재 저자의 .exrc 의 내용이다. set wm=10 set redraw set ai set dir=/usr1/comsin/temp

UNIX의 활용 – vi editor(cont.) 옵 션 약 자 default value 의 미 autoindent ai noai 자동 들여쓰기, 즉 바로 전의 행과 시작을 같이함 ignorecase ic noic 탐색에 있어 대소문자를 구별하지 않음 magic . * [ ~ 등을 탐색 또는 정규 표현식의 와일드 카드로 또는 메타문자로 사용 numver nu nonu 에디터 각 행에 행번호가 매겨짐 redraw noredraw 각 문자를 항상 알맞은 위치에 나타내 줌 noredraw은 1200보울 이하의 느린 터미널에 쓰임 tabstap ts ts=8 Tab키 또는 Ctrl-I에 대응되는 공백의 개수 저장 wrapscan ws / 또는 ? 연산자로 탐색을 하는 경우 사용됨 wrapmargin wm ws=0 오른쪽 여백의 크기를 지정

UNIX의 활용 – 자신의 환경 만들기 history C shell 과 Korn shell은 여러분이 입력함에 따라 명령표를 만들어내고 각각에 명령 번호를 지정한다. C shell : C shell은 default로 지난번 로그인의 마지막 명령만을 기억하고 있다. 예) & history 명령들의 목록을 작성하기 위해서는 set history=n 이라는 환경을 설정해야 한다. 예) % set history=50 : 50개의 이전 명령 기억(화면에 변화 없음) % set 항상 로그인 했을 때 이 history 기능을 사용하려면 환경 설정 file .cshrc에 set history=50 이란 내용을 추가

UNIX의 활용 – 자신의 환경 만들기(cont.) C shell의 history 명령 사용법 명 령 기 능 !! 이전의 명령 반복 !$ 이전 명령의 마지막 단어를 반복 !* 이전의 명령의 첫번째 단어를 제외한 모든 단어를 반복 ^a^b 이전 명령에서 a를 b로 대체 !n history 목록에서 번호 n의 명령을 반복

UNIX의 활용 – 자신의 환경 만들기(cont.) alias 축약어. 긴 명령을 alias명령을 이용하여 쉽게 타이핑 할 수 있음 이 축약어 역시 여러분이 계속 사용하고 싶다면 .cshrc file 안에 넣어 두면 된다. 사용법 : alias [새로운 alias명] [축약할 명령어] 예) DOS명령어 dir를 쳐서 ls –l 의 출력이 나타나게 하는 예제 % alias : 현재 자신의 alias 상황을 보여줌 % alias dir ‘ls –l’ % dir

UNIX의 활용 – 자신의 환경 만들기(cont.) shell 변수 shell에는 각각의 shell이 사용하는 shell 변수가 있음 C shell에는 두 가지 종류의 shell 변수가 있다. 일반 shell 변수 : set 명령을 사용하여 생성하고 새로운 shell(서브 shell)을 시작하면 인식할 수 없음 환경 shell 변수 : setenv 명령을 사용하여 생성하고 새로운 shell(서브 shell)에서도 인식 가능함 일반 변수는 프롬프트 상에서 set 명령을 그리고 환경 shell 변수는 setenv 명령을 내리면 알 수 있다. 그리고 shell 변수명을 지정할 때 일반 shell 변수는 알파벳 소문자를 그리고 환경 shell 변수명을 지정할 때는 대문자를 사용하는 것이 BSD 계열의 UNIX의 전통이다.

UNIX의 활용 – 자신의 환경 만들기(cont.) 환경 shell 변수는 서브 shell에서도 인식이 되므로 보통 .login file에 저장합니다. 환경 변수 값 알아보기 % echo $변수 name 일반 shell 변수 값 지정 % set 변수명=값 보통 값을 지정할 때 "="기호 사이에 빈칸이 포함되어서는 안되나 ' 기호나 " 기호를 사용하면 가능하다. 환경 shell 변수 값 지정 % setenv 변수명 값 : "=" 기호를 사용하지 않는다. shell 변수 제거 % unset 변수명 % unsetenv 변수명

UNIX의 활용 – 자신의 환경 만들기(cont.) 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 사용자의 전체이름. 전자우편과 인쇄용 프로그램들은 사용자의 전체이름이 필요할 때가 있음. 이 때 이 정보가 사용됨

UNIX의 활용 – 자신의 환경 만들기(cont.) 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 명령을 실행할 수 있다.

UNIX의 활용 – 자신의 환경 만들기(cont.) shell script 예제 다음을 입력한 file을 만들고 chmod 명령으로 실행권한을 부여하여 실행하라. % echo “---- 현재 사용자의 프로그램 ----” % w | sed '1,2d' | awk ‘{print "현재 "$1"님은 "$5 $6 $7"을 실행하고 있습니다.”}' | sed 's/[1-9]//g' .cshrc에 다음의 내용을 적어주면 set filec 파일 이름의 전체를 입력하지 않아도 인식 가능한 곳까지만 타이핑해도 shell 자체에서 file name을 결정해 준다.

UNIX의 활용 – Communication tty : 어떤 디바이스를 통해 연결되었는가를 알기 위해서 사용. tty 디바이스는 하나의 UNIX file 이다. write 다른 사람(같은 서버 사용자)과 메시지를 주고 받을 수 있도록 명령 예) write [응답할 사용자 ID] 만약 당신이 write imp 이라고 했다면 imp 사용자의 화면에는 다음의 내용이 표시됨 message from root on bravo(pts/0) [ 9월 14일 월 14:19:43 ] ... 이때 통신 예의는 imp가 응답하기 전까지는 먼저 메시지를 보내서는 안된다는 것이다. imp가 응답을 하면 그때부터 서로 메시지를 주고받으면 된다. 종료는 ^D(Ctrl+D)를 누르면 된다.

UNIX의 활용 – Communication(cont.) mesg : 상대방의 메시지를 수신 할 것인가 안 할 것인가를 결정. mesg y : 메시지 수신 허가 mesg n : 메시지 수신 불허 Mail UNIX의 모든 기능중 가장 인기 있는 것 중의 하나 메일 프로그램은 여러 가지가 있음 mail 그리고 SVR4 이후에 mailx 라고 불리는 것이 있음 mailx는 Berkeley mail이라고도 불림 여러분이 만일 이미 메일을 받았을 때 mailx를 실행시키면 다음과 같은 내용이 출력된다. mailx version 5.0 Tue Jul 15 21:29:48 PDT 1997 도움말 필요 시 ? 입력 "/var/mail/imp": 1개 메시지 1개 신규 >N 1 imp Fri Dec 10 20:47 13/330 test

UNIX의 활용 – Communication(cont.) 메시지를 일기 위해서는 읽고자 하는 색인번호 입력 메시지 작성의 종료 : ^D(Ctrl+D)나 ‘.’를 새로운 라인에서 입력 mailx의 대부분의 명령은 첫글지만 입력하여 실행 가능 mailx 명령 headers 표제(제목)들을 나열해 줌 help or ? mailx 명령들에 대한 요약정보를 알려줌 delete 지정된 메시지를 삭제 mail 주소 지정된 주소로 메일을 보냄 print 메시지 지정된 메시지를 보여줌 reply 지금 읽은 메시지에 답신을 지정 undelete 삭제를 마크한 메시지를 해제 save [file] 파일에 메시지를 보관 quit 메일프로그램 종료

UNIX의 활용 – Communication(cont.) mail 보내기 % mailx [받을 사람 ID] subject : 보내고자 하는 메시지의 제목 미리 file로 작성한 내용을 메일로 보내고자 할 때 % mailx –s “메일 제목” [받는 사람 ID] < 보낼 filename 메시지를 입력하면서 사용할 수 있는 명령 ~? : 도움말 ~b : 메시지를 여러 명에게 복사해서 보낼 때 사용. 받은 사람들은 공동 수신자를 알 수 없음 ~c : 메시지를 여러 명에게 복사해서 보낼 때 사용. 받은 사람들이 공동 수신자를 알 수 있음 메일 환경 설정 파일(.mailrc) set askcc set folder =/usr/imp/Mail

System Administraion 시스템 관리 시스템 관리자가 UNIX system이 원할하게 작동되도록 하기 위해서 UNIX system상에서 수행하는 모든 관리작업들 전반적인 시스템 관리자의 책임 작업들 시스템 구성과 관련되는 작업 커널의 구성 주변장치의 구성과 설치 새로운 소프트웨어 설치 파일 시스템 관리 파일 시스템의 무결성 유지 보수 디스크의 사용도 점검 디스크 공간의 배정 파일 시스템의 생성, mount, unmount 반복적인 작업의 자동화 cron 유틸리티의 활용

System Administraion(cont.) 사용자 계정(account)의 관리 /etc/passwd 파일에 새로운 사용자 추가 /etc/group 파일에 새로운 그룹 추가 사용자를 위한 홈 디렉터리의 생성 사용자를 위한 start-up의 작성 시스템 운영에 대한 평가 /usr/adm/acct 파일에 의한 시스템 사용도 평가 /usr/adm/wtmp 파일에 대한 로그인 정보의 추적 프린터 사용도 추적 log파일의 생성과 추적 평가 시스템 보안 관리 중요 데이터의 2차 보전 해커(hacker)들로부터의 시스템 침입에 대한 대비 시스템 장애시의 비상 대책 수립

System Administraion(cont.) 시스템 특권 사용자 Super-user 대부분의 시스템 관리 작업들은 시스템 전반에 관하여 중대한 영향을 미치는 정보에의 접근을 의미하므로 Super-user의 권한이 필요함 Super-user의 권한을 얻는 방법 사용자가 시스템 콘솔(console)에서 시스템의 가동을 시작하여 단일 사용자 모드(single user mode)로 선택하면 자동적으로 Super-user로서 login된다. 단일 사용자 모드에서는 root로만 login할 수 있다 Super-user의 ID인 root를 사용하여 login하는 방법 일반 사용자로 login한 상태에서 su command를 사용하는 방법 시스템의 안전을 위해서 su command를 사용하는 것이 바람직하다. 어느 방법을 사용하든지 간에 Super-user의 비밀번호를 요청한다. 올바른 비밀번호를 입력하면 Super-user 특권으로 수행되고 있음을 의미하는 프롬프트 #를 출력한다. Super-user 특권이 요청되는 작업을 마치면 Ctrl+D를 입력해서 종료한다.

System Administraion(cont.) su (Substitute user/Super-user) : 새로운 사용자로 임시 교체 형식 su [option] [user] 기능 시스템 상에서 임시로 다른 사용자가 될 수 있도록 함으로써 다른 사용자의 파일들을 액세스할 수 있도록 한다. 인수를 지정하지 않으면 root(Super-user)로 가정한다. option - 완전한 다른 사용자로 로그인 한다. -c command 새로운 사용자로서 로그인한 후에 수행할 명령 지정 예 % su - Super-user로 로그인 password: 비밀번호 입력 # root로 로그인한 결과 $ su – imp imp란 사용자로 로그인 …

System Administraion(cont.) Super-user로 가능한 작업 시스템의 시동 및 종료 사용자 계정의 관리 시스템 clock의 설정 자원 사용의 제한에 대한 확장과 프로세스의 우선 순위 결정 파일 소유자 변경 파일 시스템의 생성, 점검, 보수 파일 시스템의 mounting과 unmounting 장치 파일의 생성 시스템의 backup과 복구 crontab 파일의 조작

System Administraion(cont.) 그 밖의 특권 사용자 bin : system command의 소유자 bin은 Super-user에 비교해 별다른 특권은 없지만 /bin, /usr/bin의 모든 프로그램과 장치화일을 소유한다. 일반적인 시스템 소유의 파일들은 root또는 bin으로 되어있다. root대신에 bin으로 로그인하는 이유는 만약에 발생할 지 모르는 실수에 대비하기 위함이다. daemon : 비특권 프로그램의 소유자 daemon은 보통 UID 1을 갖는다 파일들 중에는 어떤 특정한 사용자에 속하기 보다는 적절하게 UNIX에 속해야만 하는 것들이 있는데 이런한 파일을 바로 daemon이 소유하게 된다. 그 이유는 root의 소유로 인하여 발생할 수 있는 보안상의 장애를 피하기 위함이다. 비슷한 이유로 UNIX 그룹인 daemon이 생성되어 있다.

System Administraion(cont.) sys : kernel과 메모리 image들이 소유자 시스템에 따라서는 kernel의 주소공간(/dev/kmem), 시스템 실 메모리(/dev/mem), 시스템 swap 공간의 image(/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 File system reader를 포함하고 있는 system 첫 번째 Boot program인 boot block(1-15 sector에 위치함)을 읽는다.(Boot PROM 내의 boot 장치는 변경시킬 수 있음) Boot program load File system reader는 boot 장치를 열고 두 번째 Boot program인 /ufsboot를 memory에 load한다. /ufsboot program을 load한 후 Boot PROM은 kernel(/kernel/UNIX)을 load함

Boot and Shutdown(cont.) Kernel 초기화 단계 kernel은 스스로 초기화 한 후 /ufsboot program을 이용하여 module들을 load함 Kernel이 root partition을 mount 하는 데 필요한 module을 읽고나면 /ufsboot program은 memory에서 제거되고, 계속해서 kernel이 자원을 이용하여 초기화한다. /sbin/init 단계 kernel이 사용자 프로세스를 생성하며 /sbin/init program을 실행시킨다. /sbin/init program은 /etc/inittab file에 기록된 내용을 실행함 Init process는 하나의 rc script 또는 실행 가능한 다른 script 들을 차례로 실행시킨다. 이러한 script(/sbin/rc*)들은 File system을 check하고 mount하며, 여러 process들을 기동시킨다.

Boot and Shutdown(cont.) System Init State(Run-Level) Solaris는 다음과 같이 8개의 Run-level이 존재함 Run-level : 선택된 프로세스 그룹 하에서 실행하도록 하여진 소프트웨어 구성을 말함. 현재 자신의 Run-level이 몇인지 알고자 할 경우 사용하는 명령 % who –r Run level 0 : PROM Monitor 화면으로 power off하기 위한 레벨 Run level 1, s, S : 관리자 레벨로서 관리자만이 로그온 가능 Run level 2 : 멀티 유저 레벨, 자원 export 불가, network disabled Run level 3 : 멀티 유저 레벨, Default Run-level, 자원 export 허용, network enabled Run level 4 : 현재 사용하지 않는 레벨 Run level 5 : PROM monitor level로 안전하게 power off 하기 위한 레벨 Run level 6 : Operation System이 정지하고 reboot하는 레벨

Boot and Shutdown(cont.) Solaris와 Linux의 Run level 비교 Run State Solaris 2.x Action Linux Action s, S single user mode PROM monitor level halt (do not set init-default to this) 1 single user mode : root & user mounted 2 multi user mode : no resources exported without NFS and networking 3 machine resource exported full multi user mode 4 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 init-default to this)

Boot and Shutdown(cont.) 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 : 곧바로 시스템을 리부팅 함

Boot and Shutdown(cont.) 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와 마찬가지 효과)

Boot and Shutdown(cont.) shutdown command shutdown Multi-user일 때 사용하는 시스템 종료 로그인한 모든 user에게 경고 메시지를 보냄 기본적으로 1분의 waiting time을 줌 Shutdown 명령은 default로 system의 Run-level을 single-user state로 바꿈 halt 이 명령은 사용자들에게 경고 없이 즉시 system을 중지시킨다. System을 shutdown 시키기 위하여 어떠한 script도 실행시키지 않음 reboot System을 shutdown 하기 전에 ‘sync’명령을 수행한 후 reboot 실행 이 명령은 log daemon에 log를 남기며 multi-user state로 Run-level을 바꿈 보통 시스템 자체적으로 reboot하거나 시스템이 crash된 경우 사용함  System을 급하게 reboot하기 위한 명령 : uadmin 2 0

UNIX File System Management UNIX Kernel UNIX의 핵심 특정 컴퓨터 시스템에서 UNIX 환경을 구축하는 핵심기능을 구축 하드웨어와 직접적으로 관계하며 UNIX 시스템의 다른 부분이 하드웨어의 영향을 받지 않도록 함 UNIX 유틸리티와 사용자 프로그램은 커널을 호출하여 서비스를 받음 kernel이 제공하는 서비스 파일관리와 보안, 입출력 서비스, 프로세서 스케줄링과 관리 기억장소 관리, 인터럽트와 에러 처리, 날짜와 시간 서비스 시스템 작동 상황을 기록하는 사용상황통계 등 UNIX의 이식 작업(porting)은 커널의 하드웨어 의존부를 하드웨어에 맞게 변경하는 작업을 말한다. UNIX의 kernel은 80개가 넘는 시스템 호출을 제공함.

UNIX File System Management(cont.) 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으로 구성된다. vfs Virtual file system ufs UNIX file system(the standard traditional file system type) nfs Network file system pcfs DOS file system mountable on UNIX

UNIX File System Management(cont.) 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 inode의 list, free inode의 list 다음의 free inode의 list free block list와 free inode의 list를 위한 lock field 이 Super block은 메모리에 적재되어 사용되므로 시스템을 정지하고자 할때는 항상 이 내용을 sync해야 함

UNIX File System Management(cont.) inode list UNIX는 sequential file, index access file, direct access file 등의 파일 구조를 가지고 있지 않음 모든 파일은 index node 혹은 inode 라고 불리우는 정보 블록과 연결되어 있고 이 안에 다음과 같은 파일에 관한 정보를 포함한다. 파일의 길이 디스크 안의 파일의 소유 블록 파일의 소유주(UID & GID)와 이 파일을 다른 사용자가 이용할 수 있는지에 관한 정보 파일의 종류(일반, 특수, 디렉터리,…) 시스템 안에서의 reference counter(링크 수) 날짜 (생성일, 변경일, 접근일)

UNIX File System Management(cont.) 이 정보 블럭 안에는 어떠한 파일이름도 들어있지 않으며 한 파일의 선택은 디렉터리라는 중간 과정을 통해서 이루어짐 디렉터리 또한 한 파일로 이루어졌기 때문에 이 안에는 시스템이 파일을 구별할 수 있도록 일련의 번호(Index)들과 이름이 나열되어 있음 이렇게 함으로써 어떠한 파일도 디렉터리를 통하여 쉽게 reference에 의한 구별이 될 수 있으며 한 파일이 여러 디렉터리안에 저장 가능함 만약 inode가 0이라면 이 파일은 완전히 삭제된 것을 의미함 디렉터리 또한 한 파일에 속하기 때문에 디렉터리는 다른 디렉터리의 reference를 가지고 있을 수 있음 이러한 구조는 우리가 일반적으로 생각하는 디렉터리 구조 tree구조와 유사하다. inode하나는 64byte의 크기를 갖는다.

UNIX File System Management(cont.) 일반 파일(ordinary file) 일반적인 데이터 파일과 소스코드 등의 text file과 binary file을 말함 UNIX에서는 확장자가 어떤 특별한 의미를 지니는 것이 아니고 단지 사용자가 편의상 사용하는 것이다. 따라서 확장자의 제한이 없다. 단지 컴파일러 등의 프로그램이 특별한 확장자를 요구할 뿐이다. File I/O는 커널 단계에서 buffering 작업을 해주기 때문에 file을 단순히 byte로 연결된 형태로 간주 할 수 있게 해준다. 이는 곧 디스크 상의 여러 곳에 저장되어 있는 file을 하나로 연결된 것처럼 해준다. UNIX에서 파일의 구조는 OS에 의해 제어되는 것이 아니고 이를 처리하는 프로그램에 의해 제어된다.

UNIX File System Management(cont.) Directory file 디렉터리는 파일을 저장하는 파일이다. 디렉터리는 파일을 포함하며 또한 파일을 포함하고 있는 서브 디렉터리를 가질 수 있다. 디렉터리는 일반 파일과는 다른 개념이지만 읽을 때는 일반 파일과 똑같이 취급되며 빈 디렉터리라도 ‘.’과 ‘..’ 두 파일을 가지고 있다. ‘.’는 자기 자신을 가르키며 ‘..’는 상위 디렉터리를 가르킨다. 특수 파일(special file) UNIX의 특별한 파일 타입으로 UNIX는 주변 장치도 하나의 파일로 간주하기 때문에 printer, tape, memory 등은 파일 구조상의 하나의 파일로 나타낸다. 이러한 개념으로 UNIX는 모든 device의 input, output 을 이 특수파일을 통해 channel을 형성하여 처리한다.

UNIX File System Management(cont.) 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파일을 생성하거나 이 파일을 삭제해도 실제 파일에는 아무런 영향이 없다.

UNIX File System Management(cont.) Socket file 이는 process간의 communication을 빠르고 신뢰성 있게 수행해 주는 것으로 여러 종류의 socket이 있지만 대부분 network을 경유해서 서로 다른 호스트 간 process를 connect하는 데 사용된다. socket file 은 다른 process에게 디렉터리의 entry로 보여지기는 하지만 connection에 포함되지 않은 process는 읽거나 쓸 수 없다. 이 socket file type은 4.3+BSD 운영체제에서만 사용되고 SVR4에서는 IPC(Inter Process Communication)을 위해 socket을 사용하나 커널의 파일 타입으로서 사용하지 않고 socket function의 library level에서 제공한다.

UNIX File System Management(cont.) Controllers and Disk Drivers 한 개의 controller에 여러 개의 unit(즉 디바이스)들을 연결 가능 즉 여러 개의 하드 디스크, CD-ROM, Tape drive 등을 연결 가능

UNIX File System Management(cont.) Physical Disk Structure

UNIX File System Management(cont.) Disk Partitions 제일 바깥 쪽이 Volume Header이고, 다음 안쪽으로 root File system, swap space, user File system으로 구성됨 T1 Target Number d0 Disk Number s0 Slice Number 1 3 4 2

UNIX File System Management(cont.) Devices Naming Conventions for Disk and Tapes C : Controller number A : SCSI Target number N : Device or LUN number P : Slice or Disk partition number 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/Nmn IRIX /dev/[r]dsk/dskCdNsP /dev/tape /dev/ntTape Sun OS /dev/[r]sdNP /dev/rmtN /dev/nrmtN

UNIX File System Management(cont.) Meta-device disk-suit Tool을 사용해서 여러 개의 partition을 합쳐서 대형 disk를 만드는 것 Logical devices(disk) /dev/dsk/c0t1d0s2 /dev/dsk/c0t0d0s2 Meta-devices(pseudo-disk) /dev/md/dsk/d7

UNIX File System Management(cont.) 디스크 추가 UNIX System에 새로운 disk를 추가하는 과정 disk를 컴퓨터에 접속 disk 접근을 위한 장치 파일 생성 disk formatting disk partitioning and labeling UNIX File system의 구성 File system mounting File system 무결성(integrity) 검정 장치 파일의 생성 새로운 디스크에 접근하기 위해서는 먼저 이 디스크를 가리키는 파일을/dev 디렉터리에 생성 disk를 SCSI bus에 접속시킬 경우 UNIX가 자동적으로 장치화일 생성 그 밖의 경우는 시스템 공급업자의 절차에 따라 생성시키면 됨

UNIX File System Management(cont.) Disk Formatting 새로운 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을 가지질 수 있음.

UNIX File System Management(cont.) 각 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는 Partition a, b, c에 대응된다. slice 3에서 6까지는 다른 운영체제의 화일들을 위하여 사용된다. slice 7은 단지 사용자 화일들만을 포함하는 영역을 나타낸다.

UNIX File System Management(cont.) Physical Disk Partition Layout

UNIX File System Management(cont.) Disk Partitions Partition Number Name Function root root partition 1 swap swap partition. 물리적 메모리가 부족할 때 사용 6 usr user partition. root 나 system이 주로 사용하는 디렉터리 7 (none) The entire disk except the volume header and xflog Partition 8 volhdr volume header 9 reservation partition 10 volume The entire disk, Including the volume header

UNIX File System Management(cont.) 하드 디스크 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 프로그램을 설치함

UNIX File System Management(cont.) 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), 최대 블럭 사이즈

UNIX File System Management(cont.) File system mounting File system이 사용 가능하려면 mount가 되어야 한다. Mount는 File system 을 root File system의 일부로 부착하여 계층 구조화 시키는 작업 한번 File system이 mount 되면 이 File system의 화일들은 root File system 의 일부인 것처럼 접근이 가능하다. File system은 mount과정의 반대, 즉 umount를 통해 root File system과의 연결을 단절시킨다. mount, umount command 형식 % mount [options] [block-special-file directory] % umount [options] block-special-file | directory  부팅 시 자동으로 자동으로 mount를 시키도록 하기 위해서는 기종에 따라서 /etc/vfstab file이나 /etc/fstab file에 mount 명령 첨가하면 된다.

UNIX File System Management(cont.) 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로 이동

UNIX File System Management(cont.) File System Mounting and Unmounting disk mount 명령 % mount /dev/rdsk/dks0d2s7 /proj disk mount를 해제 명령 % umount /proj

UNIX File System Management(cont.) UNIX Directory Structure

UNIX File System Management(cont.) / (root) root directory. IRIX의 경우는 kernel이 들어있는 directory(/unix) /dev 컴퓨터의 가장 중요한 부분 중 하나인 device를 관리하는 directory 디스플레이 및 터미널, 키보드를 비롯한 UNIX system의 모든 자원들을 집중 관리하는 곳이다. 모든 디바이스들은 dev 디렉터리에 파일의 형태로 독립적으로 존재한다. /etc UNIX는 관리는 사용자 계정, File system, security, device drivers, 하드웨어 구성 등의 관리를 포함하여 매우 복잡할 수 있다. 이러한 모든 관리상에 필요한 파일과 정보를 저장하는 디렉터리다. 참고로 유저를 관리하는 ‘passwd’파일도 바로 이 디렉터리에 존재한다.

UNIX File System Management(cont.) /etc/config System configuration file 들이 담겨있는 directory /lib UNIX system에서 사용되는 함수나 절차적 라이브러리를 보관하는 장소 /lib32 컴파일러에 의해서 참조되고 사용되는 binaries, library file 이 담겨있음 /lib64 64bit system을 사용하는 compiler에 의해서 참조되고 사용되는 binaries, libraries file 이 담겨있음 /lost+found 파일이 어떤 종류의 문제나 오류로부터(fsck명령에 의해) 복구되었을 때 커널 파일 시스템 내의 올바른 위치를 알아내지 못할 때 저장되는 장소

UNIX File System Management(cont.) /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 auto-mount File system의 mount point

UNIX File System Management(cont.) /usr 자체적으로 만든 프로그램, 사용자와 시스템 관리에 필요한 명령들, 공유 라이브러리들 UNIX System의 일부분들이 서브 directory형태로 존재함 어떤 시스템의 경우는 mount point로 사용되기도 하는 directory /usr/bin 일반적으로 많이 사용되는 실행파일들을 저장 초기의 UNIX에서 모든 실행 파일들을 일괄적으로 보관하기 위해 사용되었다. 하지만 점점 UNIX에 첨가되는 실행파일이 많아짐에 따라 여러 directory로 분리되어 저장하게 되었다.(/bin, /usr/bin) /usr/include 표준 system과 program library들에 대한 interface를 정의한 C 언어 header file들이 들어 있음

UNIX File System Management(cont.) /usr/man 온라인 매뉴얼 페이지가 들어있는 directory /usr/lib 표준 유닉스를 지원하는 파일들이 있는 directory /usr/local 지역적인 소프트웨어(관리자에 의해 설치된 소프트웨어) /usr/local/adm 지역적인 계정과 log 파일들 /usr/local/bin 지역적인 실행 파일들 /usr/local/etc 지역적인 시스템 구성 파일과 명령어들

UNIX File System Management(cont.) /usr/local/sbin 지역적인 시스템 유지 명령어들 /usr/local/src /usr/local/*을 위한 원시 코드들 /usr/share 다양한 응용프로그램의 공유파일들 /var 시스템의 파일들이나 로그 기록을 관리하는 파일이 있는 directory /var/adm 계정 파일들, 자원의 사용법을 기록한 파일들이 있는 directory /var/spool 프린터, UUCP, 메일 등을 모아서 보관

UNIX File System Management(cont.) /var/tmp 임시 저장 공간(reboot 해도 없어지지 않음) /var/ucb 버클리 유틸리티와 프로그램들 /var/x11 X11 configuration files /var/yp NIS command files /kernel 커널을 설치하는데 필요한 파일들(Solaris)  만약 /sbin이 존재한다면 일반적으로 /usr/sbin으로 심볼릭 링크되어 있다.

User and Group Management Adding user 시스템 관리자의 가장 중요한 업무 중 하나 system에 user를 등록하는 방법은 다음과 같다..(Solaris의 경우) Admin Tool을 이용한 방법 Solaris에 포함된 관리 툴인 admin-tool을 사용하는 방법으로 X-Window상에서 편리하게 사용자를 추가 삭제 할 수 있음 또한 그룹, 호스트, 프린터, 직렬포트, 소프트웨어까지 열람 및 편집 가능 사용자 추가를 선택하여 사용자 아이디 등의 몇 가지 정보를 입력하면 자동으로 홈 디렉터리가 만들어지며 계정이 생성된다. Note: admin tool은 사용이 편리하기는 하지만 파일을 덮어쓸 때 심볼릭 링크인지를 검사하지 않기 때문에 타인의 root권한의 획득이 가능하다. 때문에 일반적으로 사용하지 않고 permission을 ‘100’으로 바꾸고 사용하지 않는 경향이 있다.

User and Group Management(cont.) 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

User and Group Management(cont.) 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 명령으로 권한을 넘겨준다.

User and Group Management(cont.) 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 삭제

User and Group Management(cont.) Adding group 시스템에 새로운 그룹을 추가할 때는 admin tool을 사용하거나 다음의 명령을 이용한다. % groupadd [-g gid [-o]] group -g gid : 이 옵션은 추가될 Group의 GID(integer)를 지정하는 것이고 이 옵션을 지정하지 않으면 가장 높은 GID의 다음의 숫자가 GID가 된다. -o : 하나의 GID를 다른 Group이 중복해서 사용하는 것을 허용하는 옵션. Delete group 시스템에서 group을 삭제할 때는 다음과 같은 명령을 사용한다. % groupdel group

User and Group Management(cont.) 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

User and Group Management(cont.) passwd file을 관리할 때 주의 사항 일반 사용자는 UID 0을 갖지 않아야 한다. 일반 사용자는 GID 0을 갖지 않아야 한다. password란은 공백이어서는 안 된다. passwd file에는 주석문(#)이 사용되지 않는다. passwd file에는 공백 라인이 있어서는 안된다.  System이 제공하는 passwd file checking program : /etc/pwck

User and Group Management(cont.) 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의 PID값 UID : 해당 process에 접근할 수 있는 User ID GID : 해당 process에 접근할 수 있는 Group ID

Administration Commands(cont.) Process들이 가질 수 있는 상태(state)들 Running (O) : 현재 실행되고 있는 상태 Runnable (R) : 실행 가능한 상태(process가 queue에 들어 있을 때) Sleeping (S) : 어떠한 event가 완료되기를 기다리는 상태 Zombie (Z) : process는 종료했지만 parent는 이를 기다리지 않는 상태 Stopped (T) : 정지되어있는 대기 상태 (실행 가능하지 않음)  이들을 확인하려면 ps 명령의 -e, -f, -l option을 사용하면된다.

Administration Commands(cont.) 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(정상 종료)

Administration Commands(cont.) 다음의 세 명령은 PID 100번을 무조건 종료하라는 똑같은 의미이다. kill -9 100 kill -s kill 100 kill -s KILL 100  kill 명령은 반드시 정상적인 방법으로 종료할 수 없을 때에만 사용해야 한다. pkginfo 현재 자신의 시스템에 설치되어있는 소프트웨어의 리스트를 보여줌 Super-user가 옵션을 가지고 사용할 경우 설치된 소프트웨어를 삭제할 수도 있다. IRIX Version [-vFV] remove name

Administration Commands(cont.) 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 정보를 보여줌

Administration Commands(cont.) mkfile 형식 mkfile size[k|b|m|g] filename 기능 swap space 등을 증대하기 위하여 file을 만들어 주어야 할 경우 사용 option -v : 만들어질 file에 대한 이름이나 크기 등의 정보를 표시함 예) % mkfile 50m testfile passwd 형식 passwd [-df] user-name 사용자의 패스워드를 변경 도는 패스워드 파일에 사용자를 등록시키는 명령 -d :사용자 패스워드를 삭제할 때 -f : 사용자 패스워드를 강제로 변경(새로이 로그인시 변경 요구)

Administration Commands(cont.) quot : 각 사용자별 디스크 공간 사용 상태 표시 형식 quot [option][filesystem] 기능 화일 시스템의 각 사용자가 소유한 디스크 공간의 블럭수를 리포트한다. option -f 사용자들이 소유한 file의 개수를 표시 -a 모든 화일 시스템에 대한 리포트 생성 -c 전체 블럭 또는 적은 화일들의 누적된 사이즈, 화일내의 블럭 사이즈 등을 리포트 -V 지난 30, 60, 90일 동안 접근되지 않은 블럭의 개수를 리포트

Administration Commands(cont.) cron : 주기적으로 command 수행시키는 daemon 형식 cron 기능 명시한 날짜와 시간에 지정한 command들을 수행한다. 정규적으로 스케쥴된 command 들이 /var/spool/cron/crontabs 디렉터리의 crontabs화일에 명시될 수 있다. 사용자들이 crontab command 를 사용하여 자신의 crontab 화일을 제공할 수 있다. 단 한번만 실행될 command는 at command를 사용하여 crontab파일을 제공한다.

Administration Commands(cont.) crontab : crontab 파일의 생성, 편집, 삭제 형식 crontab [option] [username] crontab [filename] 기능 지정한 파일 또는 표준 입력을 복사하여 사용자들이 crontab 파일을 보관하는 디렉터리에 포함시킨다. 사용자의 crontab 파일에는 그 사용자를 대신하여 지정한 날짜와 시간에 수행시켜야 하는 command들이 나열되어 있다.

Administration Commands(cont.) uname 형식 uname -a 기능 현재 시스템의 Identify를 보여줌 보여주는 내용은 현재 자신의 시스템의 O/S 버전 및 hostname, process name, 그래픽 보드 등 option -a : 모든 내용을 보여주는 option hostname 형식 hostname [-s] [name-of-host] hostname new-hostname 뒤에 아무런 내용 없이 hostname을 실행하면 현재 자신의 시스템의 이름을 보여줌 그러나 root가 hostname new-hostname이라고 입력하면 시스템의 이름이 바뀌게 됨

Administration Commands(cont.) hostid 형식 hostid 기능 자신의 장비의 고유 ID를 보여줌 이것은 장비 생산 업체에서 부여한 고유한 ID로서 유일함 UNIX OS에서는 대부분의 사용 가능한 상업적인 소프트웨어들이 위의 명령을 가지고 얻은 고유 ID로서 소프트웨어 라이센스를 만들어 낸다. 상업적인 소프트웨어를 사용하기 위해서는 위 명령어를 가지고 얻어진 ID를 소프트웨어 판매회사에 보내어 라이센스를 받아야 함 IRIX sysinfo [-s][-v][-vv]

Administration Commands(cont.) eeprom (ROM 모니터 패스워드) 형식 eeprom 기능 시스템을 다른 사람이 수동으로 부트하지 못하게 하기 위하여 ROM Program에 Password를 할당할 수 있음 IRIX nvram 이것은 매우 주의해서 사용해야 한다. 만약 이 패스워드를 잊어버리면 하드웨어에 손을 대야 복구가 가능하게 때문에 조심해서 사용해야 한다.

Administration Commands(cont.) sync (syncronize) : 디스크 정보의 동기화 형식 sync 기능 디스크 상에 써넣을 메모리 내의 buffer의 내용을 출력함 수정된 수퍼 블록, 수정된 i-node 및 지연된 블럭형 입출력을 포함한다. CPU가 비정상적으로 정지되기 전에 호출되어 모든 디스크 write들이 완료된것을 확인할 수 있다. 사용자가 많은 시간대에 부득이 시스템을 리부팅해야 하는 경우는 이 sync명령을 필히 해주어야 한다. 이 sync명령은 약간의 delay time이 생길수 있으므로 보통 3-4번 정도를 연속해서 해주는 것이 좋다.

Administration Commands(cont.) System crash UNIX system은 때때로 급작스런 정전이나 하드웨어 고장, 조작 실수 등으로 인하여 시스템이 정지되는 수가 있다. 이러한 경우를 system crash라고 한다. Crash가 발생한 경우 파일 시스템이 손상되거나 파괴될수 있다. 이런 경우는 조속히 보수를 하는 것이 중요하다. 파일 시스템의 가능한 손상을 최소화시키기 위해서는 먼저 UNIX system을 booting시켜야 한다. 이 때 시스템의 boot는 단일 사용자 모드로 하고 root system disk를 제외한 다른 장치를 mount시키지 않아야 한다. 시스템의 booting이 완료되면 곧 fsck command를 root 디스크에 대하여 실행하여 root를 보수한다.

Administration Commands(cont.) 만일 파일 시스템이 보수되면 sync를 실행하지 않고 곧바로 시스템을 reboot한다. 그리고 다른 모든 파일 시스템을 mount 시키기 전에 fsck command를 실행시킨다. crash가 발생한경우 발생 가능한 손상의 종류 superblock의 정보가 맞지 않는다. inode의 link 개수가 맞지 않는다. 하나 이상의 inode가 동일한 블록을 참조한다. 사용한 inode가 어느 디렉터리로부터도 참조되지 않는다. 블록이 미사용으로 표시되어 있는데 inode로부터 참조된다. 블록이 사용 중으로 표시되어 있는데 inode로부터 참조되지 않는다. 보수한 파일이나 디렉터리들은 소유자들에게 통보하여 완전성을 점검토록 해야 한다.

Administration Commands(cont.) fsck (file search check) : File System의 점검과 보수 형식 fsck [option] [File system(s)] 기능 UNIX File system의 오류 상태를 조사하여 대화식으로 복원한다. Fils system이 정상 상태로 되어 있으면 화일, 사용 블럭, 미사용 블럭의 수를 출력한다. File system이 오류 상태로 되어 있으면 수정 여부를 묻는 메시지를 사용자에게 출력한다. 수정 처리를 실행하면 그 결과로 어느 정도의 데이터가 손실될 수 있다. 손실된 데이터의 양과 중요도는 진단 출력에 표시된다. 옵션을 지정하지 않으면 사용자의 yes/no 응답에 의해 수행된다. File system을 명시하지 않으면 /etc/fstab 파일에 기록된 파일 시스템을 참조한다.

Administration Commands(cont.) 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

Administration Commands(cont.) UNIX System Management Tool 이러한 툴들은 모두 시스템 관리자의 편의를 돕기 위한 그래픽 툴이다. 때로는 유용하게 사용할 수 있으나, 종종 부주의한 실수를 일으키거나 이러한 툴들을 사용할 수 없는 경우가 종종 발생한다. 그래서 유능한 시스템 관리자가 되기 위해서는 시스템관리 명령어들을 잘 익혀두는 것이 좋다. UNIX 종류 관리 도구 명려어 Solaris Admin Tool AIX smit, VSM IRIX Cadmin facility Digital UNIX setup HP-UX SAM

Installing Software Installing Software 사용자를 위해 새로운 소프트웨어를 설치하는 것 역시 관리자의 중요한 일중의 하나이다. 관리자는 항상 사용자를 위해 새로운 application이나 OS upgrade를 실시해야 한다. 새로운 Software Package Install(pkgadd command) binary package를 install하는 방법 일반적으로 software는 package의 형태로 부여된다. 이러한 package를 설치하는 명령으로 pkgadd명령이 있다.

Installing Software(cont.) 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명령은 기본 spool 디렉터리(/var/spool/pkg)에서 package를 찾는다. 또 –s option을 사용하면 package를 install하는 대산 이것을 spool 디렉터리로 복사한다. option -d device package를 install 또는 copy한다. device는 full-name이거나 tape, floppy disk, hard disk가 될 수 있다. 또한 device alias를 쓸 수 있다.(예-/floppy/floppy0) -n non-interactive mode로 작동한다. default는 interactive이다. -s spool install 대신에 spool directory에 copy한다.

Installing Software(cont.) Source Code Install 이미 컴파일 된 binary를 받아 설치하지 않고 source code를 받아서 시스템에서 compile하여 설치하는 방법이다. 이는 시스템에 좀 더 최적화된 software를 설치하기 위해서이다. 일반적인 순서 필요한 software source code를 다운 받는다. 시스템에 적절하게 configuration 한다. % ./configure compile 한다. % make install 한다. % make install 설치한 software를 실행한다.

Installing Software(cont.) 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 : 추출된 목록 -ㅣ : 긴 목록

Installing Software(cont.) -v : 버전 일반적으로 시스템의 package를 알아보기 위해 % pkginfo | more % pkginfo –c application 설치한 package에 대한 자세한 정보를 알아내는 방법 % pkginfo –l <package>

Installing Software(cont.) 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 백업 관리 유틸리티 시스템 Backup dump 전체 백업 또는 최근에 변경된 데이터의 백업 restore dump command에 의해 백업된 테이프에서 파일의 복원 volcopy 하나의 디스크의 파일시스템 전체 혹은 일부를 다른 디스크 또는 테이프에 압축된 이미지로 복사 labelit 파일 시스템의 superblock에 label을 기록 시스템 Backup 디스크를 기반으로 한 시스템에서 디스크 파일들의 복사본을 다른 매체에 보관하는 2차적인 보전 작업 UNIX의 dump에는 0~9까지의 서로 다른 수준이 있음 수준 0은 total dump로서 모든 파일이 dump되며 이 dump 출력은 시스템이 재 복구에 사용될 수 있다.

Backups and Restores(cont.) 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 위의 두가지 방법을 보완한 형태

Backups and Restores(cont.) dump : 파일 시스템의 dump 형식 dump [option] File system 기능 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 테이프에 기록할 블록 사이즈 명시

Backups and Restores(cont.) volcopy : 파일 시스템의 복사 형식 volcopy [option] fsname srcdev vol1 destdev vol2 기능 디스크의 모든 파일 시스템의 image를 다른 디스크 또는 tape에 똑같이 복사함 bit-for-bit 복사이므로 total backup으로만 사용가능 보통 신속한 disk-to-disk 복사에 사용된다. volcopy의 가장 큰 장점은 손실한 데이터를 아주 용이하게 복구 가능함. option -F ufs 복사하고자 하는 File system의 type fsname File system을 복사할 때의 mount point scrdev File system을 복사할 device명 (source device) vol1 source device의 volume label destdev 복사할 destination device의 device명 vol2 destination device의 volume label

Backups and Restores(cont.) labelit : 파일 시스템에 label 부여 형식 labelit [option] dev [fsname vol] 기능 파일 시스템의 superblock에 짧은 label을 기록한다. 이후의 작업에서 파일 시스템을 식별하는데 사용된다. option -F ufs ufs file system type dev raw disk device의 label fsname File system을 복사할 때의 mount point vol physical media의 임의의 식별자

Backups and Restores(cont.) restore : dump로부터의 복구 형식 restore options [filename(s)] 기능 Dump command로부터 생성된 backup tape으로부터 파일들을 복구한다. 반드시 옵션을 지정해야 한다. option i 복구를 대화식으로 하도록 함 r 수준 0으로 dump된 것을 새로운 file system이나 빈 file system으로 전체 복구함. R 복구 재개. 전체 백업된 것 중에서 부분적인 복구 가능 t 백업 content 표시 X 파일 또는 디렉터리를 복구 또는 압축해제 h 디렉터리가 복구 파일이 들어 있지 않은 경우는 복구 하지 않음 v 복구한 파일 이름을 표시함

Network Management UNIX System의 Network 관련 File /etc/hosts /etc/networks /etc/netmasks /etc/protocols /etc/services /etc/ethers /etc/bootptab /etc/inetd.conf

Network Management(cont.) /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

Network Management(cont.) /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

Network Management(cont.) /etc/netmasks 경로 설정에 필요한 네트 마스크를 지정하는 파일 Subnet mask가 제공하는 세 가지 정보 network, sub-network, 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

Network Management(cont.) /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

Network Management(cont.) /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

Network Management(cont.) /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의 실질적인 이름

Network Management(cont.) /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

Network Management(cont.) 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 복사본을 연결된 호스트 혹은 네트워크에 전송함

Network Management(cont.) 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이 시작

Network Management(cont.) 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)

Network Management(cont.) automount 자동적으로 NFS 파일 시스템을 mount 더 이상 필요하지 않으면 unmount rpcbind Solaris 시스템에서 실행 SunOS 상에서는 동일한 기능인 portmap process가 사용됨 RPC 서비스 전에 시작되어야 함 universal address(port number)를 RPC 프로그램 number 로 mapping 하는 기능

Network Management(cont.) UNIX System의 Network Command hostname netstat route ifconfig ping arp nslookup domainname rpcinfo snoop

Network Management(cont.) hostname 현재의 host name을 출력 /etc/rc.boot 파일이 수행될 때 결정됨 host name에 대한 정보는 화일 /etc/hostname.xx0에서 유지됨 host name의 변경 super user에 의해 변경 가능 사용 예 [bravo]hostname bravo

Network Management(cont.) netstat 기능 연결되어 있는 종단간 호스트의 정보 두 호스트의 이름, 사용 포트 번호 네트워크 접속 하드웨어에 대한 정보 데이터 버퍼 경로 결정 표 및 통계 프로토콜 별 통계

Network Management(cont.) netstat의 실행 결과 종단간 호스트의 정보 netstat -a 현재 연결되어 있는 모든 종단간 호스트에 대한 정보 표시 클라이언트로부터 연결을 기다리고 있는 모든 서버에 대한 정보까지 표시 실행 예 TCP Local Address Remote Address Swind Send-Q Rwind Recv-Q State -------------------- -------------------- ----- ------ ----- ------ ------- *.ftp *.* 0 0 0 0 LISTEN *.telnet *.* 0 0 0 0 LISTEN bravo.kwangju.ac.kr.telnet ice1.1210 8647 0 8760 0 ESTABLISHED bravo.kwangju.ac.kr.nfsd ice2.985 8760 0 8760 0 ESTABLISHED

Network Management(cont.) 네트워크 접속 하드웨어에 관한 정보 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

Network Management(cont.) 데이터 버퍼 netstat -m streams allocation: cumulative allocation current maximum total failures streams 154 255 8026 0 queues 459 640 19003 0 msg 267 16313 11213297 0 linkblk 8 340 172 0 strevent 6 340 36693 0 syncq 15 113 629 0 qband 0 255 2 0 167 Kbytes allocated for streams data

Network Management(cont.) 경로 결정 표 및 통계 경로 결정표의 수정은 route 명령 사용 수정된 경로 결정 표 확인 netstat -r Routing Table: Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ------ --------- 202.30.35.0 bravo.kwangju.ac.kr U 3 209 lane0 224.0.0.0 bravo.kwangju.ac.kr U 3 0 lane0 default 202.30.35.33 UG 0 4046 localhost localhost UH 0 195006 lo0

Network Management(cont.) 프로토콜별 통계 netstat -s UDP udpInDatagrams = 1493 udpInErrors = 0 udpOutDatagrams = 1488 TCP tcpRtoAlgorithm = 4 tcpRtoMin = 200 tcpRtoMax = 60000 tcpMaxConn = -1 tcpActiveOpens = 2147 tcpPassiveOpens = 638 tcpAttemptFails = 1 tcpEstabResets = 29 tcpCurrEstab = 1 tcpOutSegs =319932 tcpOutDataSegs =191769 tcpOutDataBytes =159754275 IP ipForwarding = 2 ipDefaultTTL = 255 ipInReceives =760857 ipInHdrErrors = 0 ipInAddrErrors = 0 ipInCksumErrs = 0 ipForwDatagrams = 0 ipForwProhibits = 0 ICMP icmpInMsgs = 286 icmpInErrors = 0 icmpInCksumErrs = 2 icmpInUnknowns = 0 IcmpInDestUnreachs = 4 icmpInTimeExcds = 0

Network Management(cont.) netstat -rs Routing Table: Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ------ --------- localhost localhost UH 0 22 lo0 203.246.48.0 cse3.kwangju.ac.kr U 3 658 le0 BASE-ADDRESS.MCAST.NET cse3.kwangju.ac.kr U 3 0 le0 default 203.246.48.1 UG 0 551 UDP udpInDatagrams = 1496 udpInErrors = 0 udpOutDatagrams = 1491 TCP tcpRtoAlgorithm = 4 tcpRtoMin = 200 tcpRtoMax = 60000 tcpMaxConn = -1 tcpActiveOpens = 2194 tcpPassiveOpens = 639 tcpAttemptFails = 1 tcpEstabResets = 29

Network Management(cont.) route 경로 결정표를 수동으로 변경하는 명령 관리자에 의해 수행 경로 결정 daemon process의 실행을 중지 사용 형식 route add | delete 목적지, 게이트웨이, 홉 수 add: 경로 결정 표에 한 행을 첨가 delete:경로 결정 표에 한 행을 삭제

Network Management(cont.) 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

Network Management(cont.) 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

Network Management(cont.) ping 접속하고자 하는 호스트가 사용가능한지를 check하는 명령 ping 호스트 [제한시간] 제한 시간은 기본적으로 20초 사용 예 [bravo]ping honey honey.kwangju.ac.kr is alive

Network Management(cont.) [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

Network Management(cont.) arp ARP 프로토콜에 의해 사용됨 Internet-to-Ethernet 변환 테이블을 표시하거나 변경 사용 예 arp hostname arp -a arp -d hostname arp -f filename arp -s hostname ether_addr [temp] [pub] [trail]

Network Management(cont.) [bravo]arp –a Net to Media Table Device IP Address Mask Flags Phys Addr ------ -------------------- - -------------- ----- --------------- lane0 202.30.35.33 255.255.255.255 00:00:ef:04:d1:10 lane0 dns.kwangju.ac.kr 255.255.255.255 08:00:5a:99:81:bc lane0 202.30.35.130 255.255.255.255 00:60:2f:03:bc:81 lane0 bravo.kwangju.ac.kr 255.255.255.255 SP 08:00:20:96:fd:d0 lane0 klic.kwangju.ac.kr 255.255.255.255 00:20:48:09:0b:95 lane0 203.246.50.209 255.255.255.255 00:10:5a:82:ee:00 lane0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00

Network Management(cont.) 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 Name: hosim.kwangju.ac.kr Address: 202.30.35.55

Network Management(cont.) domainname domainname의 기능 현재의 네트워크 정보 서비스 기능을 제공 domain name을 set하거나 display하는데 사용 사용 형식 domainname [name-of-domain] 인수 없이 사용하면 현재의 도메인 이름 domain name에 관한 정보는 파일 /etc/defaultdomain에서 유지하고 있음

Network Management(cont.) rpcinfo rpc와 관련된 정보를 보고하는 기능 사용 형식 rpcinfo [-m] [-s] host rpcinfo [-p] host rpcinfo -s 간결한 형태로 정보를 display [bravo ]rpcinfo -s program version(s) netid(s) service owner 100000 2,3,4 udp,tcp,ticlts,ticotsord,ticots rpcbind superuser 100029 2,1 ticots,ticotsord,ticlts keyserv superuser 100078 4 ticots,ticotsord,ticlts kerbd superuser 100024 1 ticots,ticotsord,ticlts,tcp,udp status superuser 100232 10 udp sadmind superuser

Network Management(cont.) rpcinfo displays all RPC services registered on the local host program version netid address service owner 100000 4 ticots bravo.rpc rpcbind superuser 100000 3 ticots bravo.rpc rpcbind superuser 100000 4 ticotsord bravo.rpc rpcbind superuser 100000 3 ticotsord bravo.rpc rpcbind superuser 100000 4 ticlts bravo.rpc rpcbind superuser 100000 3 ticlts bravo.rpc rpcbind superuser 100000 4 tcp 0.0.0.0.0.111 rpcbind superuser 100000 3 tcp 0.0.0.0.0.111 rpcbind superuser 100000 2 tcp 0.0.0.0.0.111 rpcbind superuser 100000 4 udp 0.0.0.0.0.111 rpcbind superuser 100000 3 udp 0.0.0.0.0.111 rpcbind superuser 100000 2 udp 0.0.0.0.0.111 rpcbind superuser

Network Management(cont.) uname 현재 시스템의 정보를 display 사용 예 [bravo]uname SunOS [bravo]uname -a SunOS bravo 5.6 Generic_105181-16 sun4u sparc SUNW,Ultra-Enterprise

Network Management(cont.) 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

Network Management(cont.) 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. 이상복,음호식 공저. 도서출판 기한재