UNIX Unbounded A Beginning Approach

47
HANNAM Univ. HANNAM Univ. UNIX Unbounded UNIX Unbounded A Beginning Approach A Beginning Approach 이 이 이 이 이 이 Home : nimilx2.hannam.ac.kr Home : nimilx2.hannam.ac.kr E-mail : E-mail : sh [email protected] Tel : +82-42-629-7559 Tel : +82-42-629-7559

description

UNIX Unbounded A Beginning Approach. 이 성 현 Home : nimilx2.hannam.ac.kr E-mail : [email protected] Tel : +82-42-629-7559. 목차. 유닉스 쉘 쉘 변수 그 밖의 메타 문자들 그 밖의 유닉스 명령어 구동 파일 ksh 와 bash 유닉스 프로세스 관리 요약 질의 및 응답 실습. 유닉스 쉘. 개요 유닉스 쉘이란 ? 사용자와 순수 유닉스 운영체제 사이를 연결하는 프로그램 - PowerPoint PPT Presentation

Transcript of UNIX Unbounded A Beginning Approach

Page 1: UNIX Unbounded A Beginning Approach

HANNAM HANNAM Univ.Univ.

UNIX UnboundedUNIX UnboundedA Beginning ApproachA Beginning Approach

이 성 현이 성 현Home : nimilx2.hannam.ac.krHome : nimilx2.hannam.ac.kr

E-mail : E-mail : [email protected] : +82-42-629-7559Tel : +82-42-629-7559

Page 2: UNIX Unbounded A Beginning Approach

2

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

목차목차 유닉스 쉘

쉘 변수

그 밖의 메타 문자들

그 밖의 유닉스 명령어

구동 파일

ksh 와 bash

유닉스 프로세스 관리

요약

질의 및 응답

실습

Page 3: UNIX Unbounded A Beginning Approach

3

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 개요

■ 유닉스 쉘이란 ?▶ 사용자와 순수 유닉스 운영체제 사이를 연결하는 프로그램▶ 프로그램의 실행시 사용자는 쉘을 통하여 운영체제와 통신하게 되고 , 하드웨어 - 의존 기능들은

커널에서 관리▶ 쉘은 자체가 프로그램 , 즉 유틸리티 프로그램▶ 사용자가 시스템에 로그인할 때마다 메모리에 적재▶ 사용자가 입력한 각 명령어를 검사하고 해당 유닉스 프로그램에 요청한 작업을 수행

■ 유닉스 쉘의 종류▶ Bourne Shell▶ Korn Shell▶ C Shell

Page 4: UNIX Unbounded A Beginning Approach

4

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 쉘 시작하기

■ 쉘의 생명 주기▶ 사용자가 시스템에 성공적으로 로그인한 후에 시작되고 사용자가 로그아웃할 때까지 유지

■ 시스템의 각 사용자는 기본 쉘을 가지고 있음▶ 시스템의 패스워드 파일에 기술▶ etc/passwd▶ 사용자가 로그인 할 때 , 시스템은 시작할 쉘을 패스워드 파일에서 찾아 결정

쉘 프로그램 이름 프롬프트 기호 쉘 이름

/bin/sh $ Bourne Shell

/bin/ksh $ Koen Shell

/bin/bash $ Bourne Againg Shell

/bin/csh & C Shell

/bin/tcsh & TC Shell

쉘과 쉘 프로그램 이름

Page 5: UNIX Unbounded A Beginning Approach

5

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 쉘 시작하기

■ 사용자 쉘 확인▶ /etc/passwd 파일의 확인

Page 6: UNIX Unbounded A Beginning Approach

6

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 쉘 시작하기

■ 내장된 쉘 명령어▶ 쉘 명령어 해석기는 명령어와 같이 쉘에 의해 기계어로 번역된 특별한 내부 기능을 가지고 있음▶ 쉘의 한 부분으로 내부적으로 인식되고 수행됨▶ 내장 명령어의 대부분이 쉘에서 구현되고 특정 쉘에 유일한 형태로 존재

내장된 쉘 명령어

명령어내장되어 있는 쉘

Bourne 쉘 Korn 쉘 Bourne Againg 쉘

alias ksh bash

echo sh ksh bash

history ksh bash

kill sh ksh bash

set sh ksh bash

unalias ksh bash

unset sh ksh bash

Page 7: UNIX Unbounded A Beginning Approach

7

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 쉘 시작하기

■ 내장된 쉘 명령어 확인▶ $ man shell_builtins [Enter]

Page 8: UNIX Unbounded A Beginning Approach

8

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 쉘의 주요 기능 이해하기

■ 표준 유닉스 쉘은 200 개 이상의 유틸리티 프로그램을 소유▶ 쉘 자신의 예 : sh▶ 대부분 유닉스 시스템에서 가장 많이 사용하는 유틸리티 프로그램▶ 정교하게 작성된 프로그램으로 사용자와 유닉스 시스템간의 대화를 관리▶ 쉘은 실행 가능한 정규형 C/C++ 프로그램▶ /bin 디렉토리에 저장

■ 쉘의 기능▶ 명령어 실행

쉘의 주요 기능으로 프롬프트에서 입력한 모든 것을 기계어로 번역 명령어 분석 후 적합한 프로그램 수행

▶ 파일명 치환 파일명 치환이 명령어에 지정되면 쉘은 먼저 치환을 수행한 다음 프로그램을 시랳ㅇ

▶ 입 / 출력 재지정 프로그램 실행 전에 재지정이 구성 입 / 출력 재지정이 일어날 경우 쉘은 파일을 열고 , 각 프로그램의 표준 입력이나 표준

출력에 파일을 연결

Page 9: UNIX Unbounded A Beginning Approach

9

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 쉘의 주요 기능 이해하기

■ 쉘의 기능▶ 파이프

파이프 라인 (pipeline) 라고 불리며 간단한 프로그램을 사용하여 보다 복잡한 작업을 수행하도록 도와줌

▶ 환경 제어 사용자에게 적합한 환경을 제공 적절한 변수 구성을 통하여 홈 디렉토리 , 프롬프트 출력 , 작업 환경을 구성

▶ 백그라운드 프로세싱 현재 쉘에서 다른 작업을 수행하는 동안 독립적으로 백그라운드에서 프로그램을 실행 작업 수행 시간을 도와 주는 비대화식 프로그램

▶ 쉘 스크립트 쉘 스크립트 (shell script) 는 여러 가지 쉘 명령어들을 포함하고 있는 파일 파일의 이름은 나중에 저장된 프로그램을 실행하기 위해 사용되며 , 단일 명령어를

이용하여 지정된 명령어들을 수행하도록 함

Page 10: UNIX Unbounded A Beginning Approach

10

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 정보의 출력 : echo 명령어

■ Echo 명령어▶ 메시지를 출력하기 위한 명령어▶ 표준 출력 장치인 터미널에 전달 받은 인자를 출력▶ 인자가 없을 경우 , 빈 라인을 출력하고 기본적으로 출력의 마지막에 새로운 명령을 받을 수 있도록

프롬프트를 추가

옵션 기능

-n 새로운 라인 출력을 하지 못하게 함

-e 백슬래쉬 이스케이프 문자의 해석을 가능하게 함

echo 명령어 옵션

Page 11: UNIX Unbounded A Beginning Approach

11

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 정보의 출력 : echo 명령어

■ 이스케이프 문자▶ 문자열에 추가하여 메시지의 형식을 조절할 수 있는 문자▶ 문자 앞에 ‘ \’ 를 입력 , 원하는 출력을 제공하도록 쉘에 의해서 해석

이스케이프 문자 의미

\a 경고음 ( 벨 )

\b 백스페이스

\c 새로운 라인 없이 출력

\f 폼 피드 (form feed)

\n 캐리지 리턴 (carriage return) 과 라인 피드 (line feed, new line)

\r 라인 피드 없이 캐리지 리턴

\t 수평 탭

\v 수직 탭

이스케이프 문자

Page 12: UNIX Unbounded A Beginning Approach

12

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

유닉스 쉘유닉스 쉘 메타문자의 특별한 의미 제거

■ 쉘 메타문자는 쉘에서 특별한 의미를 가짐■ 인용 (quoting) 또는 이스케이핑 (escaping)

▶ 메타문자의 특별한 의미를 제거하는 과정

■ 인용문자의 구성▶ 백 슬래쉬 \▶ 큰 따옴표 “▶ 작은 따옴표 ‘

이스케이프 문자 의미

“”$, 작은 따옴표 , 큰 따옴표를 제외한 모든 문자는 큰 따옴표 사이에 위치하면 특별한 의미가 없어짐

‘’작은 따옴표를 제외한 모든 문자는 작은 따옴표 사이에 위치하면 특별한 의미가 없어짐

\ 어떠한 문자라도 백 슬래쉬 뒤에서는 특별한 의키가 없어짐

인용문자

Page 13: UNIX Unbounded A Beginning Approach

13

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

쉘 변수쉘 변수 쉘 변수

■ 쉘 프로그램▶ 명령어 해석기처럼 사용자 인터페이스와 작업을 관리▶ 명령 파일 , 파일 수정과 같이 요청한 작업을 수행하는데 적합한 쉘을 제공하고 , 사용자의 홈

디렉토리 , 터미널 유형 , 프롬프트 표시와 같이 확실한 정보와 정보에 대한 경로를 탐색하기 위해 필요

▶ 쉘 변수에 정보를 저장▶ 쉘 변수는 환경을 최적화하거나 관리하기 위한 특별한 값으로 구성된 아이템▶ 환경 변수 (environment variable) 와 지역 변수 (local variable) 의 두 가지 형태가 존재

■ 환경 변수▶ 표준 변수 (standard variable)▶ 시스템이 알고 있는 이름을 가지고 있다▶ 시스템이 요구하는 필수적인 요소에 대한 기록을 탐색하는데 사용▶ 관리자에 의해서 정의▶ ex : TERM=ansi

■ 지역 변수▶ 사용자 정의 변수▶ 사용자가 원하는 대로 정의하고 바꿀 수 있으며 , 삭제가 가능

Page 14: UNIX Unbounded A Beginning Approach

14

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

쉘 변수쉘 변수 변수 출력과 제거 : set 과 unset 명령어

■ set 명령어▶ 현재 사용하고 있는 쉘이 어떤 변수들로 구성되어 있는지 알고 싶은 경우 사용하는 명령어

Page 15: UNIX Unbounded A Beginning Approach

15

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

쉘 변수쉘 변수 변수 출력과 제거 : set 과 unset 명령어

■ unset 명령어▶ 원하지 않는 변수를 삭제▶ ex : unset ERRON [Enter]

Page 16: UNIX Unbounded A Beginning Approach

16

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

쉘 변수쉘 변수 변수의 값 할당

■ 변수 값 할당▶ 사용자는 자신의 변수들을 생성할 수 있으며 , 표준 변수에 할당된 값을 수정할 수 있음▶ ex : age=32 [Enter]▶ ex : SYSTEM=UNIX [Enter]

쉘 변수의 값 출력

■ 쉘 변수 출력▶ 쉘 변수에 저장된 값에 접근하기 위해서는 반드시 변수의 이름 앞에 $ 표시를 사용▶ echo 명령어를 사용하여 쉘 변수에 지정된 값을 출력▶ ex : age=32 echo $age $32

Page 17: UNIX Unbounded A Beginning Approach

17

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

쉘 변수쉘 변수 표준 쉘 변수에 대한 이해

■ 표준 쉘 변수▶ 표준 쉘 변수에 할당된 값들은 보통 시스템 관리자에 의해 구성▶ 사용자에 의해 변경된 변수의 값은 임시적인 형태를 지니고 있으며 , 현재의 세션에만 적용▶ 표준 쉘 변수의 경우 .profile 파일의 변수 값을 변경

■ 표준 쉘 변수의 이해▶ HOME

사용자 홈 디렉토리에 대한 완전한 경로명을 할당 cd 명령어의 경우 홈 디렉토리에 대한 경로명을 정의하기 위해 HOME 변수를 검사한

다음 , 사용자 홈 디렉토리에 대한 시스템을 변경▶ IFS

내부 필드 구분자 (Internal Field Separator) 변수는 명령 라인 요소의 구분자처럼 , 쉘에 의해 처리되는 문자의 목록으로 구성

▶ MAIL 수신한 메일의 파일명을 구성 메일을 수신할 경우 해당 파일에 저장 정기적으로 파일의 내용을 검사한 후에 메일 수신 여부를 알려줌

Page 18: UNIX Unbounded A Beginning Approach

18

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

쉘 변수쉘 변수 표준 쉘 변수에 대한 이해

■ 표준 쉘 변수의 이해▶ MAILCHECK

MAIL 변수로 구성된 파일에서 , 메일의 수신에 대한 검사 주기를 설정▶ PATH

디렉토리 구조에서 쉘이 명령어의 위치를 탐색하기 위한 디렉토리명으로 구성 경로 문자열에 나와 있는 디렉토리는 콜론으로 구성

▶ PS1 프롬프트 문자열 1(Prompt String 1; PS1) 변수는 프롬프트 표시에 사용되는 문자열을

구성▶ PS2

프롬프트 문자열 2 변수는 쉘이 명령의 나머지 부분을 기다리고 있거나 , 명령 라인의 완선 전에 [Enter]키를 눌렀을 때 출력되는 프롬프트로 구성

▶ CDPATH 완젼한 경로면의 목록으로 구성되며 , PATH 와 유사 cd 명령어의 연산에 영향을 미침

▶ SHELL 사용자의 로그인 쉘에 대한 완전한 경로명을 구성

Page 19: UNIX Unbounded A Beginning Approach

19

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

쉘 변수쉘 변수 표준 쉘 변수에 대한 이해

■ 표준 쉘 변수의 이해▶ TERM

사용자 터미널 유형을 구성▶ TZ

사용자의 타임 존을 구성

Page 20: UNIX Unbounded A Beginning Approach

20

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 메타문자들그 밖의 메타문자들 명령어의 수행 : 단일 역인용부호 (‘) 사용법

■ 포함된 명령어를 함께 수행하거나 명령 라인의 동일한 위치에서 명령어의 출력에 삽입하라고 쉘에게 요청

■ 명령어 치환이라고 부름■ 형식 : ‘command’

명령어의 순차적 실행 : 세미콜론 (;) 이용

■ 세미콜론으로 분리된 일련의 명령을 입력■ 쉘이 순차적으로 수행

명령어의 그룹화 : 괄호 () 이용

■ () 안에 일련의 명령어를 입력하여 , 명령어를 그룹화■ 마치 하나의 명령어처럼 재지정 가능

Page 21: UNIX Unbounded A Beginning Approach

21

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 메타문자들그 밖의 메타문자들 백그라운드 프로세싱 : 앰퍼샌드 (&) 이용

■ 다중 작업의 경우 이전 수행되는 명령의 수행이 종료되기를 기다리지 않도록 명령의 처리를 백그라운드로 돌림

Page 22: UNIX Unbounded A Beginning Approach

22

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 메타문자들그 밖의 메타문자들 명령어 연결 : 파이프 연산자 (|) 이용

■ 쉘은 하나의 프로세스 표준 출력은 다른 프로세스 표준 입력에 사용할 수 있는 기능을 제공

■ 명령어 사이에 파이프를 사용함으로써 기능 사용■ 형식 : command | command

Page 23: UNIX Unbounded A Beginning Approach

23

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 시간 대기 : sleep 명령어

■ 지정한 시간동안 대기하도록 프로세스를 실행■ 지정한 시간만큼 수행한 프로세스가 대기 후 실행 결과를 출력

PID 출력 : ps 명령어

■ 시스템에 있는 실행 중인 프로세스의 상태를 알기 위해 사용■ 사용자의 실행 중인 프로세스에 대한 정보를 출력

▶ PID : 프로세스 ID▶ TTY : 프로세스를 조정하는 터미널 번호▶ TIME : 프로세스가 소비한 시간 (초 단위 )▶ COMMAND : 명령어의 이름

옵션 기능

-a 현재 사용자뿐만 아니라 , 수행 중인 모든 프로세스의 상태를 출력

-f 모든 명령 라인을 포함한 모든 목록의 정보를 출력

ps 명령어 옵션

Page 24: UNIX Unbounded A Beginning Approach

24

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 PID 출력 : ps 명령어

■ 옵션의 사용

Page 25: UNIX Unbounded A Beginning Approach

25

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 지속적인 실행 : nohup 명령어

■ 사용자가 로그아웃할 경우 백그라운드 프로세스가 종료■ nohup 명령어를 이용하여 백그라운드 프로세스가 종료 시그널에서 제외되록

함■ nohup 명령어를 로그아웃을 한 후에도 프로그램을 지속적으로 처리하고자

할 때 사용

프로그램 종료 : kill 명령어

■ 정상적으로 동작하지 않는 프로세스를 종료 시키기 위해 사용■ 사용자가 동작한 프로세스만 종료 가능

Page 26: UNIX Unbounded A Beginning Approach

26

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 프로그램 종료 : kill 명령어

■ 시그널 목록▶ kill 명령을 통하여 내릴 수 있는 신호 목록을 표시

Page 27: UNIX Unbounded A Beginning Approach

27

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 출력의 분배 : tee 명령어

■ 보통 파이프 연산자와 함께 사용되며 , 출력을 다른 장치에 전송할 수 있음■ Ex : ls –C | tee dir.list

Page 28: UNIX Unbounded A Beginning Approach

28

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 출력의 분배 : tee 명령어

■ tee 명령어 옵션

파일 탐색 : grep 명령어

■ 지정한 패턴을 가지는 파일이나 파일의 목록을 탐색하기 위해 사용■ grep 명령어에 사용하는 패턴을 정규식이라고 부름■ 사용 예

▶ grep UNIX myfile

옵션 기능

-a 존재하는 파일에 덮어쓰지 않고 , 파일에 결과를 덧붙인다

-i 인터럽트를 무시하여 , 인터럽트 신호에 응답하지 않는다

tee 명령어 옵션

Page 29: UNIX Unbounded A Beginning Approach

29

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 파일 탐색 : grep 명령어

■ 명령어 옵션

옵션 기능

-c 오직 찾은 줄의 수만 세어서 출력

-i 대소문자 구분 없이 검색

-l 결과를 출력할 때 지정한 패턴이 있는 파일의 이름만을 출력

-n 출력할 때 찾은 라인의 앞에 파일 내에서의 행번호를 붙인다

-v 지정한 패턴이 없는 행들만 출력

grep 명령어 옵션

Page 30: UNIX Unbounded A Beginning Approach

30

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 텍스트 파일 정렬 : sort 명령어

■ 파일에서 알파벳이나 상수로 구성된 내용을 정렬할 때 사용■ 실행 결과는 기본적인 값에 의해 자동으로 화면에 출력되며 , 인자 또는 재지정을

통해 새로운 파일로 생성할 수 있다■ 기본적으로 각 라인별로 정렬

Page 31: UNIX Unbounded A Beginning Approach

31

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

그 밖의 유닉스 명령어그 밖의 유닉스 명령어 텍스트 파일 정렬 : sort 명령어

■ 명령어 옵션

옵션 기능

-b 필드를 비교하는 경우 , 공백으로 시작되는 필드를 무시

-d 사전식 순서에 따라 정렬 , 구두 문자와 제어문자는 무시

-f 대소문자 구별을 하지 않음

-n 산술적인 값에 따라 정렬

-o 출력을 표준 출력 장치 대신에 지정한 파일로 변경

-r 지정한 순서와 반대의 순서로 출력

sort 명령어 옵션

Page 32: UNIX Unbounded A Beginning Approach

32

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

구동 파일구동 파일 시스템 프로파일

■ 시스템 프로파일 (System Profile)▶ /etc/profile 에 위치▶ 프로파일의 실행은 쉘이 수행하는 첫번째 과정▶ 로그인 메시지 , 시스템의 전반적인 환경 변수를 구성하는 명령을 포함▶ 시스템 관리자에 의해서 생성되고 관리

Page 33: UNIX Unbounded A Beginning Approach

33

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

구동 파일구동 파일 사용자 프로파일

■ 사용자 프로파일 (User Profile)▶ 사용자가 로그인할 때마다 구동하는 파일▶ 사용자가 실행하는 쉘 환경 변수를 구성하는 명령을 포함

Page 34: UNIX Unbounded A Beginning Approach

34

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 쉘 변수

■ ksh 와 bash 는 표준 쉘 (sh) 에서 사용한 많은 동일 변수를 사용■ 중요 변수

▶ ENV 환경 파일의 절대 경로명을 포함 ENV=$HOME/mine/my_env

▶ HISTSIZE History 목록 파일에서 유지하고자 하는 명령어를 지정하는 변수 기본크기는 128 HISTSIZE=100

▶ TMOUT 명령어를 입력하지 않을 경우 일정한 시간이 되기 전까지 시스템이 기다리는 시간 지정시간내에 명령어를 입력하지 않을 경우 자동 로그오프 TMOUT=60

▶ VISUAL 명령어를 편집할 때 사용하는 변수 VISUAL=vi

Page 35: UNIX Unbounded A Beginning Approach

35

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 쉘 옵션

■ 옵션을 이름으로 설정하여 기능을 설정하거나 해제 가능■ set – 옵션명■ 중요 쉘 옵션

▶ noclobber 사용자의 파일이 변경되는 것을 예방 ex : set –o noclobber [Enter]

▶ ignoreeof 사용자가 실수로 [Ctrl-d] 를 눌러서 로그오프 하는 현상을 예방 ex : set –o ignoreeof [Enter]

Page 36: UNIX Unbounded A Beginning Approach

36

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 명령어 라인 편집

■ 사용자가 명령어 라인을 편집하거나 , 편집하지 못하도록 한번에 한 라인만 편집할 수 있는 vi 편집기의 특수한 라인 버전을 사용하여 history 파일에 있는 명령어를 편집 가능

■ 명령어 라인 편집 옵션 설정하기▶ set 명령어를 이용하여 명령어 라인 편집 옵션을 설정하거나 관리▶ ex : set –o vi [Enter] EDITOR=/usr/bin/vi [Enter] VISUAL=/usr/bin/vi [Enter]

■ vi 스타일 명령어 라인 편집기 사용 방법▶ ksh 명령어 라인 편집기는 현재 명령어 라인과 history 파일을 편집할 수 있음▶ 초기 실행은 vi 입력 모드▶ 키 조작

[Enter] : 현재의 명령어 라인을 실행 [Esc] : 입력 모드에서 해당 키를 누르면 명령어 모드가 실행

Page 37: UNIX Unbounded A Beginning Approach

37

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 명령어 라인 편집

옵션 기능

h 와 l 명령어 라인에서 커서를 한 문자 왼쪽과 오른쪽으로 이동

k 와 j History 목록에 있는 한 엔트리씩 위쪽과 아래쪽으로 이동

b 와 w 명령어 라인에서 커서를 왼쪽과 오른쪽으로 한 단어씩 이동

$ 커서를 라인의 마지막 문자로 이동

x 현재 문자를 삭제

xw 현재 단어를 삭제

I 와 i 텍스트를 삽입

A 와 a 텍스트를 추가

R 과 r 텍스트를 교체

편집기 명령어들

Page 38: UNIX Unbounded A Beginning Approach

38

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 별칭 (alias) 명령어

■ 별칭 (alias)▶ 자주 사용하는 명령어 중 긴 이름을 가진 명령어를 짧게 줄인다거나 , 명령어의 이름을 바꾸어서

명령어를 기억하기 쉽도록 할 수 있는 기능 제공▶ ex : alias del=rm [Enter] alias rm= rm –r

■ 별칭의 해제▶ unalias 명령어를 사용

명령어들의 히스토리 : history 명령어

■ 히스토리 (history)▶ 쉘이 세션을 유지하는 동안 사용한 모든 명령어들의 목록을 저장하기 위한 기능을 제공▶ history 명령어는 history 목록에서 동작하는 유틸리티 중의 하나▶ ksh 에 대한 기본 히스토리 파일은 .sh_history, bash 에 대한 기본 히스토리 파일은 .bash_history라고 부름

▶ 히스토리 파일은 시스템에 의해 사용자의 홈 디렉토리에 생성▶ ex : history [Enter]

Page 39: UNIX Unbounded A Beginning Approach

39

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 명령어 재실행 (ksh) : r(redo) 명령어

■ r 명령어를 통해 이전에 실행하였던 명령어들을 재실행 가능■ 지정한 번호를 통해 히스토리 파일에 잇는 명령어를 재실행

명령어 history 목록 : fc 명령어

■ 이전에 명령어 히스토리 목록에 저장된 명령어의 목록 , 편집 , 재실행을 제공

Page 40: UNIX Unbounded A Beginning Approach

40

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 명령어 history 목록 : fc 명령어

■ fc 옵션▶ 이전 명령어에 대한 편집 , 재실행을 가능하게 하는 많은 옵션을 포함

■ fc 별칭 만들기▶ fc 명령어에 대한 별칭을 생성▶ ex : alias r=‘fc –e –’ [Enter] alias history=‘fc –l’ [Enter]

옵션 기능

-l 명령어 번호 순서로 명령어 목록을 보여줌

-n -l 로 명령어의 목록을 보여줄 때 명령어 번호를 보여주지 않음

-r -l 로 명령어의 목록을 역순으로 보여줌

-s 편집기를 실행하지 않고 명령어를 실행

grep 명령어 옵션

Page 41: UNIX Unbounded A Beginning Approach

41

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 로그인과 구동

■ sh 와 마찬가지로 .profile 을 읽어 관련 정보를 출력■ .profile 에서 ksh 또는 bash 환경 파일들을 읽어 쉘 환경을 설정

Page 42: UNIX Unbounded A Beginning Approach

42

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

kshksh 와 와 bashbash 프롬프트에 이벤트 번호 추가하기

■ 이벤트 번호를 통하여 쉘 프롬프트를 변경할 수 있음▶ ex : PS1=“!$” [Enter] PS1=“[!]$” [Enter]

프롬프트 변수 (bash) 설정하기

■ 특수 문자 코드를 이용하여 쉘 프롬프트를 변경▶ ex : PS1=“[\!]$” [Enter]

문자 의미

\! 현재 명령어의 history 번호를 출력

\$사용자 디렉토리가 루트가 아니면 프롬프트에 $ 를 출력 , 루트면 #를 출력

\d 현재 날짜를 출력

\s 실행하고 있는 쉘의 이름을 출력

\t 현재 시간을 출력

grep 명령어 옵션

Page 43: UNIX Unbounded A Beginning Approach

43

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

UNIX UNIX 프로세스 관리프로세스 관리 프로세스 (Process)

■ 실행중인 프로그램■ 유닉스 측면에서 프로그램이 실행을 위해 메모리에 적재된 상태■ 프로세스 테이블

▶ 프로세스의 상태 및 정보를 유지 관리하기 위한 목적의 테이블▶ 포함 정보

프로세스 번호 프로세스 상태 준비 / 대기 대기를 위한 프로세스의 이벤트 번호 시스템 데이터 영역 주소

■ 프로세스의 생성▶ fork 시스템 루틴을 호출함으로써 생성▶ 실행중인 프로세스가 fork 를 호출할 경우 동일한 프로세스 사본을 생성▶ 부모 프로세스 : fork 루틴을 호출한 프로세스▶ 자식 프로세스 : 복사한 프로세스▶ 부모와 자식 프로세스가 다른 PID 를 가짐

Page 44: UNIX Unbounded A Beginning Approach

44

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

UNIX UNIX 프로세스 관리프로세스 관리 프로세스 생성 및 관리 과정

■ 부모 프로세스가 fork 를 호출하고 프로세스 실행■ fork 가 프로세스를 복제하고 부모 프로세스에게 제어를 반환■ 부로 프로세스는 자식의 PID 를 넘겨 받고 , 자식 프로세스는 복귀 코드를 획득■ 부모 프로세스가 자식의 PID 를 수신하면 , wait 시스템 호출을 생성하고 , sleep

상태에 들어가 자식 프로세스가 종료될 때까지 대기■ 자식 프로세스가 제어를 얻은 다음 작업 수행■ 자식 프로세스가 복귀 코드를 점검 , 0 인 경우 exec 시스템 호출■ 자식 프로세스가 실행을 마칠 경우 exit 시스템 호출을 생성하고 , 자식 프로세스가

종료됨

■ 프로세스 수행의 심화 과정▶ 교재 317, 318 그림 참조

Page 45: UNIX Unbounded A Beginning Approach

45

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

요약요약 유닉스에서의 쉘의 역활

쉘 변수의 정의와 기능

유닉스 명령어의 활용

쉘 구동 파일에 대한 이해

ksh 와 bash, sh 의 공통점 및 차이점

ksh 와 bash 의 활용

유닉스에서의 프로세스 관리 절차

Page 46: UNIX Unbounded A Beginning Approach

46

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

질의 및 응답질의 및 응답

Page 47: UNIX Unbounded A Beginning Approach

47

Network Lab.Network Lab.

HANNAM HANNAM Univ.Univ.

유닉스 이론 및 실습

실습실습