SlideShare a Scribd company logo
Shell & 프로세스 관리




발표일 2012.03.29
발표자 김경석
이메일 special1809@nate.com
shell

 컴퓨터의 기본 연산 구조


         CPU



         RAM     Kernel   Shell     application
        (프로세스)            (명령어해석)




         HDD
        (프로그램)




                                                  1
shell


 Shell 의 정의
 shell은 실행파일인 프로그램과 kernel사이에서 매개체 역할을
 하는 프로그램을 말함.

 사용자가 시스템에 로그인 > 시스템에 의해 자동으로 shell이
 부여됨(설정변경가능)

 유닉스 상에서 여러가지 쉘이 제공됨.




                                         2
shell


 Shell 의 종류
 -Bourne shell : 최초의 쉘. 여러기능의 부재로 많이 사용되지 않음.
             현재는 sh.
 -bash : Bourne-Again SHell로 리눅스에서 가장 많이 사용. POSIX와 호환,
        GNU프로젝트에 의해 개발 배포, 명령행 편집기능 제공이 특징.
 -ksh : 콘쉘. 유닉스에서 가장 일반적으로 사용. 명령행 편집기능 제공.
      C계열 쉘.

 이외에도 ash, csh, zsh 등 다양한 쉘이 리눅스상에서 사용가능.




                                                          3
shell


 명령행 편집기능
 crtl+c 실행중단, crtl+u 전체행삭제, 명령어입력에서 Tab키를
 누를시 자동으로 채워주는 것, 백스페이스키를 누르면 문자가
 지워는것 등을 말함.

 -터미널 상의 오류로 이러한 기능들이 작동하지 않는 경우 stty
 명령어를 사용하여 고칠수 있다.
 stty function key
 Ex> stty kill ^U
     여기서 function에는 원하는 기능, key에는 원하는 기능이 들어감.
     ^는 Ctrl을 의미.

 - stty –a 명령어로 현재 모든 터미널 설정내용을 확인가능

                                                 4
shell

             data           data            data
    Linux                          Device
                    Shell                          terminal
    Kernel                         driver


   -디바이스 드라이버
    shell에서 사용자 명령을 보기전에 사용자가 입력한 데이터가 우선적으로 통
   과됨. 또한 터미널을 제어하며 쉘에서 입력된 문자를 해석하기 전에 문자가
   수행할 수 있는 것을 판별한다.

   -디바이스 드라이버의 동작모드
    cooked mode
     사용자 입력 문자가 디바이스드라이버에 의해 해석되는 방식. 일반적으
     로 사용되는 방식으로 두 가지 키를 동시에 사용하는 작업을 가능하게
     해줌
    raw mode
     사용자 입력 문자가 쉘이나 실행프로그램에 직접 전달되는 방식.
     Virtual Terminal 어플리케이션 같은 통신프로그램 작성시 매우 효율적.


                                                              5
shell

   Borne shell 환경변수

           변수                            설명
    HOME=/home/login   HOME은 사용자가 시작하는 위치인 홈 디렉터리를
                       설정한다. 왼쪽에서 login 부분을 ID로 대치하게 되면
                       HOME은 /home/로그인 ID로 정의된다.
    LOGNAME=login      LOGNAME은 자동으로 로그인 ID와 동일하게 설정
                       된다.
        PATH=path      Path 옵션은 쉘이 명령에 대해 찾는 디렉터리 목록을
                       표현한다. PATH=/usr:/bin:/usr/local/bin같이 설정가
                       능.
        PS1=prompt     Ps1은 프롬프트의 모습을 정의하는 1차 쉘 프롬프트
                       이다. 프롬프트의 기본은 $(달러기호)이다.
                       PS1=“linux #”는 명령어 프롬프트로 linux #를 표시.




                                                                   6
shell

   Borne shell 환경변수

            변수                          설명
        PWD=directory   PWD는 자동으로 설정됨. 사용자의 현재 위치를 나
                        타내준다. 명령줄에 echo $PWD 입력하고 linux가
                        /home이라고 표시하면 현재 /home directory에 위치
                        해있는 것이다.
        SHELL=shell     SHELL은 사용자 쉘로 프로그램의 위치를 식별한다.
                        예를 들어 .profile이나 .login 파일에서 SHELL을
                        SHELL=/bin/csh로 설정하여 csh를 로그인 쉘로 만들
                        수 있다.
    TERM=termtype       이 변수는 터미널 데이터베이스에 의해 지정되는 대
                        로 터미널 유형의 이름을 설정한다. .profile 또
                        는 .login 파일에서 TERM=vt100과 같이 TERM을 설
                        정할 수 있다.




                                                               7
shell

   Borne shell 특수 환경변수

        변수                     설명
        HOME      홈 디렉터리의 완전 경로명. HOME 변수는 홈디렉터
                  리를 지정한다. 로그인시에 홈디렉터리에 위치하게
                  되며, /cd 명령어만으로 홈디렉터리로 되돌아갈수 있
                  다.
        PATH      쉘이 명령을 탐색하는 디렉터리를 나열해준다. 쉘은
                  이 순서대로 디렉터리를 탐색한다.
        MAIL      우편함의 전체 경로명. 사용자의 전자우편을 보유하
                  는 파일의 이름이 들어있다. 메일이 시스템에 올 때
                  MAIL변수에 지정된 파일에 배치된다.
        PS1       1차 프롬프트로서 표시되는 문자열을 보유한다. 프롬
                  프트는 쉘이 명령을 수신할 준비가 될 때마다 표시하
                  는 문자열이다.



                                                  8
shell

   Borne shell 특수 환경변수

          변수                   설명
         TERM     터미널의 유형을 식별하는데 사용. 전체화면을 사용
                  하는 프로그램에서 필요하다.

          TZ      시간대를 식별하는 문자열을 보유. Date프로그램 등
                  에서 필요하다.
        LOGNAME   시스템이 사용자와 연관시키는 이름이나 문자열인
                  로그인 이름을 보유한다. 파일 소유자나 실행중인 프
                  로세스나 프로그램의 개시자, 메일 또는 메시지의 작
                  성자로서 사용자를 식별할 때 사용된다.




                                                  9
shell

   Alias 명령


    명령어의 간소화를 위한 명령어. 명령어가 길거나 옵션을 지정하기 싫을 때
    해당명령어에 일정단어를 지정해주어 사용한다.


        Alias 별명=„명령어‟
        -$ alias rm=„rm –i‟


    위와 같이 명령어를 입력하면 파일을 지울 때 확인 메세지를 띄우는
    –i 옵션을 사용하지 않을 수 있다.

    alias명령어만 입력시 현재 설정된 항목을 확인할 수 있다.




                                               10
프로세스 관리

 프로세스의 개념

  프로그램, 즉 디스크에 잠들어있는 정보가 활동할 때의 상태를 프로세스라
  고 한다.

 프로세스의 생성



  프로세스   exec 호    다른 프로세스
         출



  프로세스   fork 호출   복사본    exec 호   자식 프로세스
                   프로세스   출




                                             11
프로세스 관리

 pstree


          최초의 프로세스
          혹은 부모 프로세스


          서브프로세스 혹은
          자식 프로세스


          자식프로세스는 부
          모 프로세스의 환경
          을 물려받지만 자식
          프로세스가 환경을
          변경할 때 부모프로
          세스로 전달되지는
          않는다.



                       12
프로세스 관리

-process 상태보기

  Ps 명령어는 현존 실행 프로세스의 상태보고서를 만들어준다.

   USER(BSD) : 프로세스 소유자의 USERNAME
   UID(sys V) : 프로세스 소유자의 USERNAME
   PID        : 프로세스 식별번호
   %CPU         : CPU 사용 비율의 추정치(BSD)
   %MEN        : 메모리 사용 비율의 추정치(BSD)
   SZ         : K단위 혹은 페이지 단위의 가상메모리 사용량
                       …
   PPID        : 부모 프로세스의 PID
   PRI        : 실제 실행 우선 순위
   NI        : nice
   WCHAN        : 프로세스를 기다리고 있는 이벤트




                                           13
프로세스 관리

Signal (kill)
 Signal은 프로세스간의 통신수단으로, 프로세스가 다른 프로세스에게 메시지
 를 보내기 위한 수단이다. Kill은 signal을 보내는 명령이라고 할 수 있다.
이름         번호    의미
HUP         1    Hangup(실행종료. 로그아웃하거나 모뎀 접속을 끊을 때 보내진다.
INT         2    Interrupt(실행종료. CTRL-c를 쳤을 때 보내진다)
QUIT        3    Quit(실행종료. CTRL- 를 쳤을 때 보내진다.)
KILL        9    Kill (무조건 종료)
SEGV        11   Segmentation Violation(허가되지 않은 메모리영역에 접근하였다.)
TERM       15    Terminate(가능한 정상종료)
STOP       19    (무조건적으로 즉각적 정지)
TSTP       20    Stop(실행을 정지 후 다시 실행을 계속하기 위하여 대기, CTRL-z)
CONT       18    Continue(STOP이나 TSTP에 의해 정지된 프로세스가 다시 실행을 계속한다.


 Kill 명령의 사용법 - kill <pid>
             kill <signal> <pid>


                                                                   14
프로세스 관리

multitasking
 동시에 하나이상의 프로그램을 수행시킬 수있는 다중처리.


    Linux에서는 프로그램을 foreground와 background로 구별.
    - foreground : 화면에 보여주면서 실행되는 상태(입력을 받아들임)
    - background : 화면에 보여주지 않으면서 실행되는 상태
                (입력을 받아들이지 못함)
    - suspend : 메모리에 올라가 있지만 정지된 상태



     Background 실행 시에는 foreground 실행 뒤에 &을 붙여서 실행하면 된
     다. 하지만 입력을 필요로 하는 프로그램일 시 suspend 된다.




                                                        15
프로세스 관리

multitasking
 동시에 하나이상의 프로그램을 수행시킬 수 있는 다중처리방식.
    Linux에서는 프로그램을 foreground와 background로 구별.
    - foreground : 화면에 보여주면서 실행되는 상태(입력을 받아들임)
    - background : 화면에 보여주지 않으면서 실행되는 상태
                (입력을 받아들이지 못함)
    - suspend : 메모리에 올라가 있지만 정지된 상태

    background 실행 시에는 foreground 실행 뒤에 &을 붙여서 실행하면 된
    다. 하지만 입력을 필요로 하는 프로그램일 시 suspend 된다.

    foreground프로그램에 CTRL-z 를 입력 시 suspend 되며 다시 되돌리려
    면 “fg %<작업번호>”를 사용한다. 마찬가지로 suspend 된 것을
    background 로 하려면 “bg %<작업번호>”를 사용한다.




                                                       16
프로세스 관리

daemon
 백그라운드에서 실행되면서 server의 역할을 하거나 기능을 돕는 프로세스를
 말한다. 이러한 프로세스들은 실행 방식으로 구분된다
 -daemon의 방식

  Standalone
  보통 부팅시에 실행되는 프로세스로 메모리에 계속 상주해있다.
  서비스요구가 빈번하거나 항상 요구될 때 유용하며 대부분의
  daemon이 이 방식으로 실행된다.


  INET
   client로부터 요청이 있을 때 process가 되어 서비스를 해준다. 이
  러한 방식의 daemon들을 standalone방식으로 실행되는 super
  daemon이 관리하며 이 경우에 INET방식의 daemon들에 대해서
  특정 ip에게만 허락하는등 다른 처리단계를 지정할 수 있다. 보안
  상에 이점이 있다.


                                                17
프로세스 관리

프로세스 Utility
 Pstree -프로세스간의 상관관계를 트리형식으로 출력한다.
 Pstree [-옵션] [프로세스ID(PID) l 사용자]
 옵션         의미
 -a         명령어에 인수를 넣어 실행했다면 명령어 인수까지 함께 보여준다.
 -c         독립적인 하위트리는 보여주지 않는다. 같은 위치에 같은 프로세스가 있
            을 때 각각으로 보여준다.
 -h         현재프로세스와 부모프로세스를 두드러지게 출력한다.
 -I         특별한 긴 줄이 있어도 그대로 보여준다.
 -n         PID순서대로 정렬해서 같은 부모프로세스를 가진 자식 프로세스들을 모
            아서 출력한다.
 -p         PID도 출력한다
 -u         UID도 출력한다.
 -G         프로세스간의 관계를 보기 좋게 출력하지만 터미널에서 이상할 수 있다.
 -V         버전 정보를 보여주고 마친다.


                                                     18
프로세스 관리

프로세스 상태 알기

 Ps [-옵션]

  위의 명령어로 관리자는 현재 돌아가고 있는 프로세스를 살펴보고 죽은 프로세
 스들을 kill을 통해 삭제한다.

 Ex)
 $ps –a : 모든 프로세스를 출력.   $ps –f : 프로세스의 상속관계 출력




                                                  19
프로세스 관리

top

 CPU 프로세스 상황을 보여준다. Top 시스템의 프로세스 수, 어떤 사용자와 데몬
 이 있는 지와 CPU의 상태를 실시간으로 보여준다. 실행도중 프로세스를 제어할
 수 있다.

  서식 - # top


kill

  일부 프로그램이 먹통일 때 프로그램 종료를 위해 사용된다. 윈도우의 프로그램
  관리자-작업종료 기능과 비슷하지만 한번에 프로그램을 종료할 수 있다.

   서식 – kill [-옵션] pid
      kill [-옵션] 시그널

  - 일반 사용자는 자신의 이름으로 실행된 프로그램만 중지시킬 수 있으며, 한번
  에 간단히 프로그램을 없앨 수 있기 때문에 조심해서 실행해야 함.


                                                  20
프로세스 관리

nice

 동시에 실행되는 여러 프로세스들간에 우선순위를 부여해주는 명령어.

 서식 – nice [-n 조정수치][--adjustment=조정수치][변수]

 기본적으로 옵션사용을 하지 안으면 현재 우선순위를 출력, 조정 시에는 수치가
 작을 수록 높은 우선순위를 받게 된다.
cron & crontab

 정기적으로 명령 또는 프로세스를 지정할 때 사용된다. crontab 파일에 실행 시
 간과 날짜가 들어가며, 시간은 분,시,일,월,요일 등 다양한 항목으로 들어간다.
 Cron은 시스템이 부트될때 한번 구동되며, 개별사용자에게는 권한이 없다.

 -minute hour day month weekday command 의 형식에 맞는 입력파일 이 필
 요하며 항목에 숫자대신 *가 들어갈 경우 항상일치로 인식된다. 명령어 출력은
 사용자에게 전송된다.



                                                            21

More Related Content

PDF
7급 공무원도 쉽게 따라하는 쉘 스크립트
PDF
JavaScript Promises
PPTX
Promise 패턴 공부
PDF
세션5. web3.js와 Node.js 를 사용한 dApp 개발
PDF
Blockchain Study(4) - Geth & Smart Contract
DOCX
Linux+정리
PPT
programming with GDB
PDF
세션1. block chain as a platform
7급 공무원도 쉽게 따라하는 쉘 스크립트
JavaScript Promises
Promise 패턴 공부
세션5. web3.js와 Node.js 를 사용한 dApp 개발
Blockchain Study(4) - Geth & Smart Contract
Linux+정리
programming with GDB
세션1. block chain as a platform

What's hot (20)

PDF
[OpenTRS-001] Hotel California
PDF
세션3. geth 클라이언트 실습 및 모니터링과 시각화
PPTX
windows via c++ Ch 5. Job
PDF
Hello world
PDF
Blockchain Study(5) - Smart Contract(스마트 계약)
PDF
Blockchain 4th dapp programming
PPTX
Lightning talk - 11
PDF
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
PPTX
Easy gameserver
PDF
[Windows via c/c++] 4장 프로세스
PPTX
fluentd
PDF
세션4. 예제로 배우는 스마트 컨트랙트 프로그래밍
PPTX
스레드
PDF
코어 이더리움
PDF
[143] Modern C++ 무조건 써야 해?
PDF
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
PDF
7. variable scope rule,-storage_class
PDF
비트코인 소스 구조분석
PDF
Ryu with OpenFlow 1.3, REST API
PPTX
190821 delphi
[OpenTRS-001] Hotel California
세션3. geth 클라이언트 실습 및 모니터링과 시각화
windows via c++ Ch 5. Job
Hello world
Blockchain Study(5) - Smart Contract(스마트 계약)
Blockchain 4th dapp programming
Lightning talk - 11
BSides Delhi CTF 2018 [Never Too Late Mister (Forensics 200pts)] WriteUp
Easy gameserver
[Windows via c/c++] 4장 프로세스
fluentd
세션4. 예제로 배우는 스마트 컨트랙트 프로그래밍
스레드
코어 이더리움
[143] Modern C++ 무조건 써야 해?
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
7. variable scope rule,-storage_class
비트코인 소스 구조분석
Ryu with OpenFlow 1.3, REST API
190821 delphi
Ad

Viewers also liked (20)

PPT
Linux screen manual (KOR ver)
PDF
Bluetux - 리눅스 데스크탑 이야기 (2009Y05M30D)
PDF
SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
PPTX
Vm Vs Hyperv
PPTX
Network seminar class 1
DOCX
Sha 2 기반 인증서 업그레이드 이해
PDF
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco
PPTX
TCP/IP 발표자료 - 김연수
PDF
『데이터 분석을 통한 네트워크 보안』 - 맛보기
PDF
[14.05.28 ㅡMPIS 발표 의료기관 네트워크접근제어 (NAC)구축사례
PPTX
2014 창립제발표(리눅스스터디)
PDF
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
PDF
Bd ent security_antimalware_1027_2014
PPTX
파일시스템 관련 명령어
PDF
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회
PDF
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
PDF
Splunklive Seoul 2016 Keynote
PPTX
사용자 분석 과제
PPTX
김명환
PDF
사회기반시설 공격 동향 분석보고서 차민석 20161029_레몬 정보보호 세미나
Linux screen manual (KOR ver)
Bluetux - 리눅스 데스크탑 이야기 (2009Y05M30D)
SOSCON 2016 - OSS "개발자"의 Machine Learning 분투기
Vm Vs Hyperv
Network seminar class 1
Sha 2 기반 인증서 업그레이드 이해
커맨드 라인 도구 활용하기 - zsh + oh-my-zsh, tmux, peco
TCP/IP 발표자료 - 김연수
『데이터 분석을 통한 네트워크 보안』 - 맛보기
[14.05.28 ㅡMPIS 발표 의료기관 네트워크접근제어 (NAC)구축사례
2014 창립제발표(리눅스스터디)
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
Bd ent security_antimalware_1027_2014
파일시스템 관련 명령어
졸업작품을 앞둔 게임 기획/프로그래밍 전공 교류회
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
Splunklive Seoul 2016 Keynote
사용자 분석 과제
김명환
사회기반시설 공격 동향 분석보고서 차민석 20161029_레몬 정보보호 세미나
Ad

Similar to shell and process (20)

PDF
Linux 강의자료 ed10
PPTX
Linux programming study
PPTX
IoT with Raspberry Pi + Node JS - Chapter 1
PPTX
리눅스 드라이버 실습 #1
PDF
[IoT] MAKE with Open H/W + Node.JS - 2nd
PPTX
20100434 류아침 주제2 결과보고
PPTX
ITs 2주차_기본명령어(발표)
PPTX
System+os study 3
 
PDF
[NEXT 프연 Week2] UNIX 명령어 간단하게 살펴보기
PPTX
운영 체제 Sig
PPTX
프로세스
PDF
Introduction to Linux #1
PDF
Linux tutorial
PDF
linux1
PDF
리눅스 커널 기초 태스크관리
PPTX
Network researching
PDF
UNIX 시스템 2014-2018년 기말시험 기출문제
PDF
2장 리눅스의 기초
PDF
리눅스 시작하기
PDF
[부스트캠프 Tech talk] 최영근 80x24 크기의 세계로
Linux 강의자료 ed10
Linux programming study
IoT with Raspberry Pi + Node JS - Chapter 1
리눅스 드라이버 실습 #1
[IoT] MAKE with Open H/W + Node.JS - 2nd
20100434 류아침 주제2 결과보고
ITs 2주차_기본명령어(발표)
System+os study 3
 
[NEXT 프연 Week2] UNIX 명령어 간단하게 살펴보기
운영 체제 Sig
프로세스
Introduction to Linux #1
Linux tutorial
linux1
리눅스 커널 기초 태스크관리
Network researching
UNIX 시스템 2014-2018년 기말시험 기출문제
2장 리눅스의 기초
리눅스 시작하기
[부스트캠프 Tech talk] 최영근 80x24 크기의 세계로

More from Chulgyu Shin (18)

PPTX
솜노트 에버노트 비교
PPTX
데이터베이스서버구축및운영
PPTX
PPTX
개인정보 보호에 대한 Pest 분석
PPTX
Vnc, ssh
PPTX
오리엔테이션
PPTX
TCP/IP
PPTX
PPTX
인터넷 서비스의 종류
PPTX
네트워크의 개념
PPTX
개인미디어확산
PPTX
소셜큐레이션
PPTX
소프트웨어 설치
PPTX
앱이냐?웹이냐?
PPTX
앱이냐?웹이냐?
PPTX
책의미래
PPTX
Grub의 이해
PPTX
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
솜노트 에버노트 비교
데이터베이스서버구축및운영
개인정보 보호에 대한 Pest 분석
Vnc, ssh
오리엔테이션
TCP/IP
인터넷 서비스의 종류
네트워크의 개념
개인미디어확산
소셜큐레이션
소프트웨어 설치
앱이냐?웹이냐?
앱이냐?웹이냐?
책의미래
Grub의 이해
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져

shell and process

  • 1. Shell & 프로세스 관리 발표일 2012.03.29 발표자 김경석 이메일 special1809@nate.com
  • 2. shell 컴퓨터의 기본 연산 구조 CPU RAM Kernel Shell application (프로세스) (명령어해석) HDD (프로그램) 1
  • 3. shell Shell 의 정의 shell은 실행파일인 프로그램과 kernel사이에서 매개체 역할을 하는 프로그램을 말함. 사용자가 시스템에 로그인 > 시스템에 의해 자동으로 shell이 부여됨(설정변경가능) 유닉스 상에서 여러가지 쉘이 제공됨. 2
  • 4. shell Shell 의 종류 -Bourne shell : 최초의 쉘. 여러기능의 부재로 많이 사용되지 않음. 현재는 sh. -bash : Bourne-Again SHell로 리눅스에서 가장 많이 사용. POSIX와 호환, GNU프로젝트에 의해 개발 배포, 명령행 편집기능 제공이 특징. -ksh : 콘쉘. 유닉스에서 가장 일반적으로 사용. 명령행 편집기능 제공. C계열 쉘. 이외에도 ash, csh, zsh 등 다양한 쉘이 리눅스상에서 사용가능. 3
  • 5. shell 명령행 편집기능 crtl+c 실행중단, crtl+u 전체행삭제, 명령어입력에서 Tab키를 누를시 자동으로 채워주는 것, 백스페이스키를 누르면 문자가 지워는것 등을 말함. -터미널 상의 오류로 이러한 기능들이 작동하지 않는 경우 stty 명령어를 사용하여 고칠수 있다. stty function key Ex> stty kill ^U 여기서 function에는 원하는 기능, key에는 원하는 기능이 들어감. ^는 Ctrl을 의미. - stty –a 명령어로 현재 모든 터미널 설정내용을 확인가능 4
  • 6. shell data data data Linux Device Shell terminal Kernel driver -디바이스 드라이버 shell에서 사용자 명령을 보기전에 사용자가 입력한 데이터가 우선적으로 통 과됨. 또한 터미널을 제어하며 쉘에서 입력된 문자를 해석하기 전에 문자가 수행할 수 있는 것을 판별한다. -디바이스 드라이버의 동작모드 cooked mode 사용자 입력 문자가 디바이스드라이버에 의해 해석되는 방식. 일반적으 로 사용되는 방식으로 두 가지 키를 동시에 사용하는 작업을 가능하게 해줌 raw mode 사용자 입력 문자가 쉘이나 실행프로그램에 직접 전달되는 방식. Virtual Terminal 어플리케이션 같은 통신프로그램 작성시 매우 효율적. 5
  • 7. shell Borne shell 환경변수 변수 설명 HOME=/home/login HOME은 사용자가 시작하는 위치인 홈 디렉터리를 설정한다. 왼쪽에서 login 부분을 ID로 대치하게 되면 HOME은 /home/로그인 ID로 정의된다. LOGNAME=login LOGNAME은 자동으로 로그인 ID와 동일하게 설정 된다. PATH=path Path 옵션은 쉘이 명령에 대해 찾는 디렉터리 목록을 표현한다. PATH=/usr:/bin:/usr/local/bin같이 설정가 능. PS1=prompt Ps1은 프롬프트의 모습을 정의하는 1차 쉘 프롬프트 이다. 프롬프트의 기본은 $(달러기호)이다. PS1=“linux #”는 명령어 프롬프트로 linux #를 표시. 6
  • 8. shell Borne shell 환경변수 변수 설명 PWD=directory PWD는 자동으로 설정됨. 사용자의 현재 위치를 나 타내준다. 명령줄에 echo $PWD 입력하고 linux가 /home이라고 표시하면 현재 /home directory에 위치 해있는 것이다. SHELL=shell SHELL은 사용자 쉘로 프로그램의 위치를 식별한다. 예를 들어 .profile이나 .login 파일에서 SHELL을 SHELL=/bin/csh로 설정하여 csh를 로그인 쉘로 만들 수 있다. TERM=termtype 이 변수는 터미널 데이터베이스에 의해 지정되는 대 로 터미널 유형의 이름을 설정한다. .profile 또 는 .login 파일에서 TERM=vt100과 같이 TERM을 설 정할 수 있다. 7
  • 9. shell Borne shell 특수 환경변수 변수 설명 HOME 홈 디렉터리의 완전 경로명. HOME 변수는 홈디렉터 리를 지정한다. 로그인시에 홈디렉터리에 위치하게 되며, /cd 명령어만으로 홈디렉터리로 되돌아갈수 있 다. PATH 쉘이 명령을 탐색하는 디렉터리를 나열해준다. 쉘은 이 순서대로 디렉터리를 탐색한다. MAIL 우편함의 전체 경로명. 사용자의 전자우편을 보유하 는 파일의 이름이 들어있다. 메일이 시스템에 올 때 MAIL변수에 지정된 파일에 배치된다. PS1 1차 프롬프트로서 표시되는 문자열을 보유한다. 프롬 프트는 쉘이 명령을 수신할 준비가 될 때마다 표시하 는 문자열이다. 8
  • 10. shell Borne shell 특수 환경변수 변수 설명 TERM 터미널의 유형을 식별하는데 사용. 전체화면을 사용 하는 프로그램에서 필요하다. TZ 시간대를 식별하는 문자열을 보유. Date프로그램 등 에서 필요하다. LOGNAME 시스템이 사용자와 연관시키는 이름이나 문자열인 로그인 이름을 보유한다. 파일 소유자나 실행중인 프 로세스나 프로그램의 개시자, 메일 또는 메시지의 작 성자로서 사용자를 식별할 때 사용된다. 9
  • 11. shell Alias 명령 명령어의 간소화를 위한 명령어. 명령어가 길거나 옵션을 지정하기 싫을 때 해당명령어에 일정단어를 지정해주어 사용한다. Alias 별명=„명령어‟ -$ alias rm=„rm –i‟ 위와 같이 명령어를 입력하면 파일을 지울 때 확인 메세지를 띄우는 –i 옵션을 사용하지 않을 수 있다. alias명령어만 입력시 현재 설정된 항목을 확인할 수 있다. 10
  • 12. 프로세스 관리 프로세스의 개념 프로그램, 즉 디스크에 잠들어있는 정보가 활동할 때의 상태를 프로세스라 고 한다. 프로세스의 생성 프로세스 exec 호 다른 프로세스 출 프로세스 fork 호출 복사본 exec 호 자식 프로세스 프로세스 출 11
  • 13. 프로세스 관리 pstree 최초의 프로세스 혹은 부모 프로세스 서브프로세스 혹은 자식 프로세스 자식프로세스는 부 모 프로세스의 환경 을 물려받지만 자식 프로세스가 환경을 변경할 때 부모프로 세스로 전달되지는 않는다. 12
  • 14. 프로세스 관리 -process 상태보기 Ps 명령어는 현존 실행 프로세스의 상태보고서를 만들어준다. USER(BSD) : 프로세스 소유자의 USERNAME UID(sys V) : 프로세스 소유자의 USERNAME PID : 프로세스 식별번호 %CPU : CPU 사용 비율의 추정치(BSD) %MEN : 메모리 사용 비율의 추정치(BSD) SZ : K단위 혹은 페이지 단위의 가상메모리 사용량 … PPID : 부모 프로세스의 PID PRI : 실제 실행 우선 순위 NI : nice WCHAN : 프로세스를 기다리고 있는 이벤트 13
  • 15. 프로세스 관리 Signal (kill) Signal은 프로세스간의 통신수단으로, 프로세스가 다른 프로세스에게 메시지 를 보내기 위한 수단이다. Kill은 signal을 보내는 명령이라고 할 수 있다. 이름 번호 의미 HUP 1 Hangup(실행종료. 로그아웃하거나 모뎀 접속을 끊을 때 보내진다. INT 2 Interrupt(실행종료. CTRL-c를 쳤을 때 보내진다) QUIT 3 Quit(실행종료. CTRL- 를 쳤을 때 보내진다.) KILL 9 Kill (무조건 종료) SEGV 11 Segmentation Violation(허가되지 않은 메모리영역에 접근하였다.) TERM 15 Terminate(가능한 정상종료) STOP 19 (무조건적으로 즉각적 정지) TSTP 20 Stop(실행을 정지 후 다시 실행을 계속하기 위하여 대기, CTRL-z) CONT 18 Continue(STOP이나 TSTP에 의해 정지된 프로세스가 다시 실행을 계속한다. Kill 명령의 사용법 - kill <pid> kill <signal> <pid> 14
  • 16. 프로세스 관리 multitasking 동시에 하나이상의 프로그램을 수행시킬 수있는 다중처리. Linux에서는 프로그램을 foreground와 background로 구별. - foreground : 화면에 보여주면서 실행되는 상태(입력을 받아들임) - background : 화면에 보여주지 않으면서 실행되는 상태 (입력을 받아들이지 못함) - suspend : 메모리에 올라가 있지만 정지된 상태 Background 실행 시에는 foreground 실행 뒤에 &을 붙여서 실행하면 된 다. 하지만 입력을 필요로 하는 프로그램일 시 suspend 된다. 15
  • 17. 프로세스 관리 multitasking 동시에 하나이상의 프로그램을 수행시킬 수 있는 다중처리방식. Linux에서는 프로그램을 foreground와 background로 구별. - foreground : 화면에 보여주면서 실행되는 상태(입력을 받아들임) - background : 화면에 보여주지 않으면서 실행되는 상태 (입력을 받아들이지 못함) - suspend : 메모리에 올라가 있지만 정지된 상태 background 실행 시에는 foreground 실행 뒤에 &을 붙여서 실행하면 된 다. 하지만 입력을 필요로 하는 프로그램일 시 suspend 된다. foreground프로그램에 CTRL-z 를 입력 시 suspend 되며 다시 되돌리려 면 “fg %<작업번호>”를 사용한다. 마찬가지로 suspend 된 것을 background 로 하려면 “bg %<작업번호>”를 사용한다. 16
  • 18. 프로세스 관리 daemon 백그라운드에서 실행되면서 server의 역할을 하거나 기능을 돕는 프로세스를 말한다. 이러한 프로세스들은 실행 방식으로 구분된다 -daemon의 방식 Standalone 보통 부팅시에 실행되는 프로세스로 메모리에 계속 상주해있다. 서비스요구가 빈번하거나 항상 요구될 때 유용하며 대부분의 daemon이 이 방식으로 실행된다. INET client로부터 요청이 있을 때 process가 되어 서비스를 해준다. 이 러한 방식의 daemon들을 standalone방식으로 실행되는 super daemon이 관리하며 이 경우에 INET방식의 daemon들에 대해서 특정 ip에게만 허락하는등 다른 처리단계를 지정할 수 있다. 보안 상에 이점이 있다. 17
  • 19. 프로세스 관리 프로세스 Utility Pstree -프로세스간의 상관관계를 트리형식으로 출력한다. Pstree [-옵션] [프로세스ID(PID) l 사용자] 옵션 의미 -a 명령어에 인수를 넣어 실행했다면 명령어 인수까지 함께 보여준다. -c 독립적인 하위트리는 보여주지 않는다. 같은 위치에 같은 프로세스가 있 을 때 각각으로 보여준다. -h 현재프로세스와 부모프로세스를 두드러지게 출력한다. -I 특별한 긴 줄이 있어도 그대로 보여준다. -n PID순서대로 정렬해서 같은 부모프로세스를 가진 자식 프로세스들을 모 아서 출력한다. -p PID도 출력한다 -u UID도 출력한다. -G 프로세스간의 관계를 보기 좋게 출력하지만 터미널에서 이상할 수 있다. -V 버전 정보를 보여주고 마친다. 18
  • 20. 프로세스 관리 프로세스 상태 알기 Ps [-옵션] 위의 명령어로 관리자는 현재 돌아가고 있는 프로세스를 살펴보고 죽은 프로세 스들을 kill을 통해 삭제한다. Ex) $ps –a : 모든 프로세스를 출력. $ps –f : 프로세스의 상속관계 출력 19
  • 21. 프로세스 관리 top CPU 프로세스 상황을 보여준다. Top 시스템의 프로세스 수, 어떤 사용자와 데몬 이 있는 지와 CPU의 상태를 실시간으로 보여준다. 실행도중 프로세스를 제어할 수 있다. 서식 - # top kill 일부 프로그램이 먹통일 때 프로그램 종료를 위해 사용된다. 윈도우의 프로그램 관리자-작업종료 기능과 비슷하지만 한번에 프로그램을 종료할 수 있다. 서식 – kill [-옵션] pid kill [-옵션] 시그널 - 일반 사용자는 자신의 이름으로 실행된 프로그램만 중지시킬 수 있으며, 한번 에 간단히 프로그램을 없앨 수 있기 때문에 조심해서 실행해야 함. 20
  • 22. 프로세스 관리 nice 동시에 실행되는 여러 프로세스들간에 우선순위를 부여해주는 명령어. 서식 – nice [-n 조정수치][--adjustment=조정수치][변수] 기본적으로 옵션사용을 하지 안으면 현재 우선순위를 출력, 조정 시에는 수치가 작을 수록 높은 우선순위를 받게 된다. cron & crontab 정기적으로 명령 또는 프로세스를 지정할 때 사용된다. crontab 파일에 실행 시 간과 날짜가 들어가며, 시간은 분,시,일,월,요일 등 다양한 항목으로 들어간다. Cron은 시스템이 부트될때 한번 구동되며, 개별사용자에게는 권한이 없다. -minute hour day month weekday command 의 형식에 맞는 입력파일 이 필 요하며 항목에 숫자대신 *가 들어갈 경우 항상일치로 인식된다. 명령어 출력은 사용자에게 전송된다. 21