1 / 47

UNIX Unbounded A Beginning Approach

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

ramla
Télécharger la présentation

UNIX Unbounded A Beginning Approach

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIX UnboundedA Beginning Approach 이 성 현 Home : nimilx2.hannam.ac.kr E-mail : shlee@netwk.hannam.ac.kr Tel : +82-42-629-7559

  2. 목차 • 유닉스 쉘 • 쉘 변수 • 그 밖의 메타 문자들 • 그 밖의 유닉스 명령어 • 구동 파일 • ksh와 bash • 유닉스 프로세스 관리 • 요약 • 질의 및 응답 • 실습

  3. 유닉스 쉘 • 개요 • 유닉스 쉘이란? • 사용자와 순수 유닉스 운영체제 사이를 연결하는 프로그램 • 프로그램의 실행시 사용자는 쉘을 통하여 운영체제와 통신하게 되고, 하드웨어-의존 기능들은 커널에서 관리 • 쉘은 자체가 프로그램, 즉 유틸리티 프로그램 • 사용자가 시스템에 로그인할 때마다 메모리에 적재 • 사용자가 입력한 각 명령어를 검사하고 해당 유닉스 프로그램에 요청한 작업을 수행 • 유닉스 쉘의 종류 • Bourne Shell • Korn Shell • C Shell

  4. 유닉스 쉘 • 쉘 시작하기 • 쉘의 생명 주기 • 사용자가 시스템에 성공적으로 로그인한 후에 시작되고 사용자가 로그아웃할 때까지 유지 • 시스템의 각 사용자는 기본 쉘을 가지고 있음 • 시스템의 패스워드 파일에 기술 • etc/passwd • 사용자가 로그인 할 때, 시스템은 시작할 쉘을 패스워드 파일에서 찾아 결정 쉘과 쉘 프로그램 이름

  5. 유닉스 쉘 • 쉘 시작하기 • 사용자 쉘 확인 • /etc/passwd 파일의 확인

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

  7. 유닉스 쉘 • 쉘 시작하기 • 내장된 쉘 명령어 확인 • $ man shell_builtins [Enter]

  8. 유닉스 쉘 • 쉘의 주요 기능 이해하기 • 표준 유닉스 쉘은 200개 이상의 유틸리티 프로그램을 소유 • 쉘 자신의 예 : sh • 대부분 유닉스 시스템에서 가장 많이 사용하는 유틸리티 프로그램 • 정교하게 작성된 프로그램으로 사용자와 유닉스 시스템간의 대화를 관리 • 쉘은 실행 가능한 정규형 C/C++ 프로그램 • /bin 디렉토리에 저장 • 쉘의 기능 • 명령어 실행 • 쉘의 주요 기능으로 프롬프트에서 입력한 모든 것을 기계어로 번역 • 명령어 분석 후 적합한 프로그램 수행 • 파일명 치환 • 파일명 치환이 명령어에 지정되면 쉘은 먼저 치환을 수행한 다음 프로그램을 시랳ㅇ • 입/출력 재지정 • 프로그램 실행 전에 재지정이 구성 • 입/출력 재지정이 일어날 경우 쉘은 파일을 열고, 각 프로그램의 표준 입력이나 표준 출력에 파일을 연결

  9. 유닉스 쉘 • 쉘의 주요 기능 이해하기 • 쉘의 기능 • 파이프 • 파이프 라인(pipeline)라고 불리며 간단한 프로그램을 사용하여 보다 복잡한 작업을 수행하도록 도와줌 • 환경 제어 • 사용자에게 적합한 환경을 제공 • 적절한 변수 구성을 통하여 홈 디렉토리, 프롬프트 출력, 작업 환경을 구성 • 백그라운드 프로세싱 • 현재 쉘에서 다른 작업을 수행하는 동안 독립적으로 백그라운드에서 프로그램을 실행 • 작업 수행 시간을 도와 주는 비대화식 프로그램 • 쉘 스크립트 • 쉘 스크립트(shell script)는 여러 가지 쉘 명령어들을 포함하고 있는 파일 • 파일의 이름은 나중에 저장된 프로그램을 실행하기 위해 사용되며, 단일 명령어를 이용하여 지정된 명령어들을 수행하도록 함

  10. 유닉스 쉘 • 정보의 출력 : echo 명령어 • Echo 명령어 • 메시지를 출력하기 위한 명령어 • 표준 출력 장치인 터미널에 전달 받은 인자를 출력 • 인자가 없을 경우, 빈 라인을 출력하고 기본적으로 출력의 마지막에 새로운 명령을 받을 수 있도록 프롬프트를 추가 echo 명령어 옵션

  11. 유닉스 쉘 • 정보의 출력 : echo 명령어 • 이스케이프 문자 • 문자열에 추가하여 메시지의 형식을 조절할 수 있는 문자 • 문자 앞에 ‘\’를 입력, 원하는 출력을 제공하도록 쉘에 의해서 해석 이스케이프 문자

  12. 유닉스 쉘 • 메타문자의 특별한 의미 제거 • 쉘 메타문자는 쉘에서 특별한 의미를 가짐 • 인용(quoting) 또는 이스케이핑(escaping) • 메타문자의 특별한 의미를 제거하는 과정 • 인용문자의 구성 • 백 슬래쉬 \ • 큰 따옴표 “ • 작은 따옴표 ‘ 인용문자

  13. 쉘 변수 • 쉘 변수 • 쉘 프로그램 • 명령어 해석기처럼 사용자 인터페이스와 작업을 관리 • 명령 파일, 파일 수정과 같이 요청한 작업을 수행하는데 적합한 쉘을 제공하고, 사용자의 홈 디렉토리, 터미널 유형, 프롬프트 표시와 같이 확실한 정보와 정보에 대한 경로를 탐색하기 위해 필요 • 쉘 변수에 정보를 저장 • 쉘 변수는 환경을 최적화하거나 관리하기 위한 특별한 값으로 구성된 아이템 • 환경 변수(environment variable)와 지역 변수(local variable)의 두 가지 형태가 존재 • 환경 변수 • 표준 변수(standard variable) • 시스템이 알고 있는 이름을 가지고 있다 • 시스템이 요구하는 필수적인 요소에 대한 기록을 탐색하는데 사용 • 관리자에 의해서 정의 • ex : TERM=ansi • 지역 변수 • 사용자 정의 변수 • 사용자가 원하는 대로 정의하고 바꿀 수 있으며, 삭제가 가능

  14. 쉘 변수 • 변수 출력과 제거 : set과 unset 명령어 • set 명령어 • 현재 사용하고 있는 쉘이 어떤 변수들로 구성되어 있는지 알고 싶은 경우 사용하는 명령어

  15. 쉘 변수 • 변수 출력과 제거 : set과 unset 명령어 • unset 명령어 • 원하지 않는 변수를 삭제 • ex : unset ERRON [Enter]

  16. 쉘 변수 • 변수의 값 할당 • 변수 값 할당 • 사용자는 자신의 변수들을 생성할 수 있으며, 표준 변수에 할당된 값을 수정할 수 있음 • ex : age=32 [Enter] • ex : SYSTEM=UNIX [Enter] • 쉘 변수의 값 출력 • 쉘 변수 출력 • 쉘 변수에 저장된 값에 접근하기 위해서는 반드시 변수의 이름 앞에 $ 표시를 사용 • echo 명령어를 사용하여 쉘 변수에 지정된 값을 출력 • ex : age=32 echo $age $32

  17. 쉘 변수 • 표준 쉘 변수에 대한 이해 • 표준 쉘 변수 • 표준 쉘 변수에 할당된 값들은 보통 시스템 관리자에 의해 구성 • 사용자에 의해 변경된 변수의 값은 임시적인 형태를 지니고 있으며, 현재의 세션에만 적용 • 표준 쉘 변수의 경우 .profile 파일의 변수 값을 변경 • 표준 쉘 변수의 이해 • HOME • 사용자 홈 디렉토리에 대한 완전한 경로명을 할당 • cd 명령어의 경우 홈 디렉토리에 대한 경로명을 정의하기 위해 HOME 변수를 검사한 다음, 사용자 홈 디렉토리에 대한 시스템을 변경 • IFS • 내부 필드 구분자(Internal Field Separator) 변수는 명령 라인 요소의 구분자처럼, 쉘에 의해 처리되는 문자의 목록으로 구성 • MAIL • 수신한 메일의 파일명을 구성 • 메일을 수신할 경우 해당 파일에 저장 • 정기적으로 파일의 내용을 검사한 후에 메일 수신 여부를 알려줌

  18. 쉘 변수 • 표준 쉘 변수에 대한 이해 • 표준 쉘 변수의 이해 • MAILCHECK • MAIL 변수로 구성된 파일에서, 메일의 수신에 대한 검사 주기를 설정 • PATH • 디렉토리 구조에서 쉘이 명령어의 위치를 탐색하기 위한 디렉토리명으로 구성 • 경로 문자열에 나와 있는 디렉토리는 콜론으로 구성 • PS1 • 프롬프트 문자열 1(Prompt String 1; PS1) 변수는 프롬프트 표시에 사용되는 문자열을 구성 • PS2 • 프롬프트 문자열 2 변수는 쉘이 명령의 나머지 부분을 기다리고 있거나, 명령 라인의 완선 전에 [Enter]키를 눌렀을 때 출력되는 프롬프트로 구성 • CDPATH • 완젼한 경로면의 목록으로 구성되며, PATH와 유사 • cd 명령어의 연산에 영향을 미침 • SHELL • 사용자의 로그인 쉘에 대한 완전한 경로명을 구성

  19. 쉘 변수 • 표준 쉘 변수에 대한 이해 • 표준 쉘 변수의 이해 • TERM • 사용자 터미널 유형을 구성 • TZ • 사용자의 타임 존을 구성

  20. 그 밖의 메타문자들 • 명령어의 수행 : 단일 역인용부호(‘) 사용법 • 포함된 명령어를 함께 수행하거나 명령 라인의 동일한 위치에서 명령어의 출력에 삽입하라고 쉘에게 요청 • 명령어 치환이라고 부름 • 형식 : ‘command’ • 명령어의 순차적 실행 : 세미콜론(;) 이용 • 세미콜론으로 분리된 일련의 명령을 입력 • 쉘이 순차적으로 수행 • 명령어의 그룹화 : 괄호 () 이용 • ()안에 일련의 명령어를 입력하여, 명령어를 그룹화 • 마치 하나의 명령어처럼 재지정 가능

  21. 그 밖의 메타문자들 • 백그라운드 프로세싱 : 앰퍼샌드(&) 이용 • 다중 작업의 경우 이전 수행되는 명령의 수행이 종료되기를 기다리지 않도록 명령의 처리를 백그라운드로 돌림

  22. 그 밖의 메타문자들 • 명령어 연결 : 파이프 연산자(|) 이용 • 쉘은 하나의 프로세스 표준 출력은 다른 프로세스 표준 입력에 사용할 수 있는 기능을 제공 • 명령어 사이에 파이프를 사용함으로써 기능 사용 • 형식 : command | command

  23. 그 밖의 유닉스 명령어 • 시간 대기 : sleep 명령어 • 지정한 시간동안 대기하도록 프로세스를 실행 • 지정한 시간만큼 수행한 프로세스가 대기 후 실행 결과를 출력 • PID 출력 : ps 명령어 • 시스템에 있는 실행 중인 프로세스의 상태를 알기 위해 사용 • 사용자의 실행 중인 프로세스에 대한 정보를 출력 • PID : 프로세스 ID • TTY : 프로세스를 조정하는 터미널 번호 • TIME : 프로세스가 소비한 시간(초 단위) • COMMAND : 명령어의 이름 ps 명령어 옵션

  24. 그 밖의 유닉스 명령어 • PID 출력 : ps 명령어 • 옵션의 사용

  25. 그 밖의 유닉스 명령어 • 지속적인 실행 : nohup 명령어 • 사용자가 로그아웃할 경우 백그라운드 프로세스가 종료 • nohup 명령어를 이용하여 백그라운드 프로세스가 종료 시그널에서 제외되록 함 • nohup 명령어를 로그아웃을 한 후에도 프로그램을 지속적으로 처리하고자 할 때 사용 • 프로그램 종료 : kill 명령어 • 정상적으로 동작하지 않는 프로세스를 종료 시키기 위해 사용 • 사용자가 동작한 프로세스만 종료 가능

  26. 그 밖의 유닉스 명령어 • 프로그램 종료 : kill 명령어 • 시그널 목록 • kill 명령을 통하여 내릴 수 있는 신호 목록을 표시

  27. 그 밖의 유닉스 명령어 • 출력의 분배 : tee 명령어 • 보통 파이프 연산자와 함께 사용되며, 출력을 다른 장치에 전송할 수 있음 • Ex : ls –C | tee dir.list

  28. 그 밖의 유닉스 명령어 • 출력의 분배 : tee 명령어 • tee 명령어 옵션 • 파일 탐색 : grep 명령어 • 지정한 패턴을 가지는 파일이나 파일의 목록을 탐색하기 위해 사용 • grep 명령어에 사용하는 패턴을 정규식이라고 부름 • 사용 예 • grep UNIX myfile tee 명령어 옵션

  29. 그 밖의 유닉스 명령어 • 파일 탐색 : grep 명령어 • 명령어 옵션 grep 명령어 옵션

  30. 그 밖의 유닉스 명령어 • 텍스트 파일 정렬 : sort 명령어 • 파일에서 알파벳이나 상수로 구성된 내용을 정렬할 때 사용 • 실행 결과는 기본적인 값에 의해 자동으로 화면에 출력되며, 인자 또는 재지정을 통해 새로운 파일로 생성할 수 있다 • 기본적으로 각 라인별로 정렬

  31. 그 밖의 유닉스 명령어 • 텍스트 파일 정렬 : sort 명령어 • 명령어 옵션 sort 명령어 옵션

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

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

  34. ksh와 bash • 쉘 변수 • ksh와 bash는 표준 쉘(sh)에서 사용한 많은 동일 변수를 사용 • 중요 변수 • ENV • 환경 파일의 절대 경로명을 포함 • ENV=$HOME/mine/my_env • HISTSIZE • History 목록 파일에서 유지하고자 하는 명령어를 지정하는 변수 • 기본크기는 128 • HISTSIZE=100 • TMOUT • 명령어를 입력하지 않을 경우 일정한 시간이 되기 전까지 시스템이 기다리는 시간 • 지정시간내에 명령어를 입력하지 않을 경우 자동 로그오프 • TMOUT=60 • VISUAL • 명령어를 편집할 때 사용하는 변수 • VISUAL=vi

  35. ksh와 bash • 쉘 옵션 • 옵션을 이름으로 설정하여 기능을 설정하거나 해제 가능 • set –옵션명 • 중요 쉘 옵션 • noclobber • 사용자의 파일이 변경되는 것을 예방 • ex : set –o noclobber [Enter] • ignoreeof • 사용자가 실수로 [Ctrl-d]를 눌러서 로그오프 하는 현상을 예방 • ex : set –o ignoreeof [Enter]

  36. ksh와 bash • 명령어 라인 편집 • 사용자가 명령어 라인을 편집하거나, 편집하지 못하도록 한번에 한 라인만 편집할 수 있는 vi 편집기의 특수한 라인 버전을 사용하여 history 파일에 있는 명령어를 편집 가능 • 명령어 라인 편집 옵션 설정하기 • set 명령어를 이용하여 명령어 라인 편집 옵션을 설정하거나 관리 • ex : set –o vi [Enter] EDITOR=/usr/bin/vi [Enter] VISUAL=/usr/bin/vi [Enter] • vi 스타일 명령어 라인 편집기 사용 방법 • ksh 명령어 라인 편집기는 현재 명령어 라인과 history 파일을 편집할 수 있음 • 초기 실행은 vi 입력 모드 • 키 조작 • [Enter] : 현재의 명령어 라인을 실행 • [Esc] : 입력 모드에서 해당 키를 누르면 명령어 모드가 실행

  37. ksh와 bash • 명령어 라인 편집 편집기 명령어들

  38. ksh와 bash • 별칭(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]

  39. ksh와 bash • 명령어 재실행(ksh) : r(redo) 명령어 • r 명령어를 통해 이전에 실행하였던 명령어들을 재실행 가능 • 지정한 번호를 통해 히스토리 파일에 잇는 명령어를 재실행 • 명령어 history 목록 : fc 명령어 • 이전에 명령어 히스토리 목록에 저장된 명령어의 목록, 편집, 재실행을 제공

  40. ksh와 bash • 명령어 history 목록 : fc 명령어 • fc 옵션 • 이전 명령어에 대한 편집, 재실행을 가능하게 하는 많은 옵션을 포함 • fc 별칭 만들기 • fc 명령어에 대한 별칭을 생성 • ex : alias r=‘fc –e –’ [Enter] alias history=‘fc –l’ [Enter] grep 명령어 옵션

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

  42. ksh와 bash • 프롬프트에 이벤트 번호 추가하기 • 이벤트 번호를 통하여 쉘 프롬프트를 변경할 수 있음 • ex : PS1=“!$” [Enter] PS1=“[!]$” [Enter] • 프롬프트 변수(bash) 설정하기 • 특수 문자 코드를 이용하여 쉘 프롬프트를 변경 • ex : PS1=“[\!]$” [Enter] grep 명령어 옵션

  43. UNIX 프로세스 관리 • 프로세스(Process) • 실행중인 프로그램 • 유닉스 측면에서 프로그램이 실행을 위해 메모리에 적재된 상태 • 프로세스 테이블 • 프로세스의 상태 및 정보를 유지 관리하기 위한 목적의 테이블 • 포함 정보 • 프로세스 번호 • 프로세스 상태 준비/대기 • 대기를 위한 프로세스의 이벤트 번호 • 시스템 데이터 영역 주소 • 프로세스의 생성 • fork 시스템 루틴을 호출함으로써 생성 • 실행중인 프로세스가 fork를 호출할 경우 동일한 프로세스 사본을 생성 • 부모 프로세스 : fork 루틴을 호출한 프로세스 • 자식 프로세스 : 복사한 프로세스 • 부모와 자식 프로세스가 다른 PID를 가짐

  44. UNIX 프로세스 관리 • 프로세스 생성 및 관리 과정 • 부모 프로세스가 fork를 호출하고 프로세스 실행 • fork가 프로세스를 복제하고 부모 프로세스에게 제어를 반환 • 부로 프로세스는 자식의 PID를 넘겨 받고, 자식 프로세스는 복귀 코드를 획득 • 부모 프로세스가 자식의 PID를 수신하면, wait 시스템 호출을 생성하고, sleep 상태에 들어가 자식 프로세스가 종료될 때까지 대기 • 자식 프로세스가 제어를 얻은 다음 작업 수행 • 자식 프로세스가 복귀 코드를 점검, 0인 경우 exec 시스템 호출 • 자식 프로세스가 실행을 마칠 경우 exit 시스템 호출을 생성하고, 자식 프로세스가 종료됨 • 프로세스 수행의 심화 과정 • 교재 317, 318 그림 참조

  45. 요약 • 유닉스에서의 쉘의 역활 • 쉘 변수의 정의와 기능 • 유닉스 명령어의 활용 • 쉘 구동 파일에 대한 이해 • ksh와 bash, sh의 공통점 및 차이점 • ksh와 bash의 활용 • 유닉스에서의 프로세스 관리 절차

  46. 질의 및 응답

  47. 실습

More Related