unix/linux unix/linux 시작시작 -...

36
Li /UNIX P i Li /UNIX P i Linux/UNIX Programming Linux/UNIX Programming UNIX/Linux UNIX/Linux 시작 시작 양세 양세 강원대학교 강원대학교 IT IT특성화대학 특성화대학 컴퓨터과학전공 컴퓨터과학전공

Upload: dangdien

Post on 20-Oct-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Li /UNIX P iLi /UNIX P iLinux/UNIX ProgrammingLinux/UNIX Programming

UNIX/Linux UNIX/Linux 시작시작

문양세문양세양세양세강원대학교강원대학교 ITIT특성화대학특성화대학 컴퓨터과학전공컴퓨터과학전공

운영체제운영체제 (1/2)(1/2)UNIX/Linux 시작

운영체제(Operating System)

• 이론적으로 상당히 복잡하며 여러 상용 및 시험 제품들이 존재• 이론적으로 상당히 복잡하며, 여러 상용 및 시험 제품들이 존재

• 가장 중요한 제어 프로그램 (아무리 사소한 컴퓨터라도 운영체제는 있어야…)

• 하드웨어를 가장 효율적으로 제어할 수 있도록 하는 것이 목적• 하드웨어를 가장 효율적으로 제어할 수 있도록 하는 것이 목적

• 하드웨어와의 중요한 인터페이스로서 동작 (device driver)

• 사용자의 작업을 도우며 다른 프로그램이 실행되는 것을 지원• 사용자의 작업을 도우며, 다른 프로그램이 실행되는 것을 지원(일반 사용자는 운영체제가 있는지조차 의식할 필요가 없으나,실제로 system programmer는 운영체제의 이해가 프로그램 작성에 중요한 요소임)

Linux/UNIX Programmingby Yang-Sae MoonPage 2

운영체제운영체제 (2/2)(2/2)UNIX/Linux 시작

사용자1

사용자2

사용자n

컴파일러/어셈블러

온라인 게임 문서 편집기

운영체제

응용 프로그램

운영체제

컴퓨터 하드웨어

UNIX,Windows,Linux퓨터 하 웨어 Linux….

Linux/UNIX Programmingby Yang-Sae MoonPage 3

UNIX UNIX History (1/4)History (1/4)UNIX/Linux 시작

UNIX?

• 1969년 AT&T의 벨 연구소(Bell Lab.)에서 Ken Thompson에 의해 개발

• 운영체제가 곧 UNIX다? (Windows 출현 이전에는 절반 이상 Yes, 현재는 No!)

• UNIX 운영체제의 쓰임: 중대형 컴퓨터, 산업계(은행, 통신 등)

1969년 – 출생

B ll L b 의 연구원인 K Th 이 어셈블리 언어 개발• Bell Lab.의 연구원인 Ken Thompson이 어셈블리 언어로 개발(위키: http://en.wikipedia.org/wiki/Ken_Thompson)

• 어원: 기존에 사용하던 운영 체제였던 “MULTICS”는 그 명칭만큼의 원하는 성능을 갖지못함

한가지 일이라도 잘한다는 의미를 함축하고 있는 “UNI”라는 부분을 넣어 UNIX라는 운영체제가 개발됨

• 처음 버전은 단일 사용자 시스템으로서 네트워크 능력이 없고 프로세스간 메모리 능력이 매우 빈약한 메모리 관리 기능을 가지고 있는 원시적 운영체제

Linux/UNIX Programmingby Yang-Sae MoonPage 4

UNIX UNIX HistoryHistory ((2/4)2/4)UNIX/Linux 시작

1972년 – 성장

• 같은 연구소(Bell Lab.)에서 연구원으로 근무 하고 있던 동료인 Dennis Ritchie 가C언어 개발 C언어를 이용하여 유닉스를 다시 만들 것을 제안(위키: http://en.wikipedia.org/wiki/Dennis_Ritchie)

• 유닉스 시스템은 다른 운영체제에 대해 커다란 장점을 가지게 됨유닉 시 템은 다른 운영체제에 대해 커다란 장점을 가지게 됨High Level Language로 작성되어 소스 코드 이해하기가 매우 쉬움

의 진화UNIX의 진화

• 처음의 유닉스는 상업용이 아니었고 연구용으로 개발되었기 때문에 소스 코드와 함께대학에 무상으로 제공대학에 무상 제공

• UC Berkeley 대학의 대학원생들은 이 소스를 연구하여 독자적인 BSD 유닉스라 불리는독자적인 유닉스 버전을 만들어 일반인에게 공개함

UNIX가 여러 곳에서 연구 발전하는 반면에 많은 버전의 UNIX가 개발되는• UNIX가 여러 곳에서 연구, 발전하는 반면에 많은 버전의 UNIX가 개발되는혼란을 초래 표준화의 필요성 대두

Linux/UNIX Programmingby Yang-Sae MoonPage 5

UNIX UNIX HistoryHistory (3/4)(3/4)UNIX/Linux 시작

UNIX의 표준화 (POSIX: Portable Operating System Interface)

• IEEE(Institute Of Electrical and Electronic Engineer)에서 제안

• 소스레벨에서 호환성을 보장하는 유닉스

• 대부분의 단체, 회사들이 POSIX를 지원하며, 현재 사용되는 대부분의 UNIX들도 POSIX를 따르고 있음를 따르고 있음

• 위키: http://ko.wikipedia.org/wiki/POSIX

UNIX의 두 가지 버전

1. AT&T사가 상품화한 SYSTEM V 계열

2. BSD(Berkeley Software Distribution)사가 만든 BSD 계열

• 유닉스는 개발 당시부터 다중 사용자와 자원 공유를 큰 목적으로 개발했기 때문에 네트워킹 기능이 강력 인터넷 서버로서 각광 받은 이유워킹 기능이 강력 인터넷 서버로서 각광 받은 이유

• 유닉스의 이전 버전들은 System V와 BSD 4.3으로부터 각각 유래, 새로운 버전들은 양쪽유닉스의 특성들을 대부분 포함

Linux/UNIX Programmingby Yang-Sae MoonPage 6

UNIX UNIX HistoryHistory (4/4)(4/4)UNIX/Linux 시작

UNIX의 대중화 – Linux의 출현

• Free software, open source 추구

• GNU Project와 더불어 대중성을 가짐

• 현재 200여 개 넘는 배포판 존재 (software 자체는 무료, maintenance는 유료)

• 위키(한글): http://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4

• 위키(영문): http://en.wikipedia.org/wiki/Linux

• Open architecture 추구를 통해 PC에서 슈퍼컴까지 활용분야 넓어짐• Open architecture 추구를 통해 PC에서 슈퍼컴까지 활용분야 넓어짐

Linux/UNIX Programmingby Yang-Sae MoonPage 7

UNIX/Linux UNIX/Linux 시스템시스템 구조구조 (1/2)(1/2)UNIX/Linux 시작

커널 (Kernel)

• UNIX가 처음 부팅될 때 메모리로 로딩(loading)UNIX가 처음 부팅될 때 메모리로 로딩(loading)

• 컴퓨터 시스템 자원들(디스크, 테이프,프린터 등)을 관리하는 운영체제의 핵심

• 항상 주기억 장치(main memory)에 상주하면서 프로세스 관리, 네트워크 관리, 항상 주기억 장치( y)에 상주하면서 세 관리, 네 워 관리,프로세스 간 통신 등을 관리함

• 10,000줄 이상의 C언어와 1000줄 정도의 어셈블리어로 구성이식성( t bilit )이 좋음이식성(portability)이 좋음

쉘 (Shell)

• UNIX 명령어를 해석하는 명령어 해석기로 사용자와 UNIX OS간의 인터페이스와 Shell Programming 언어를 해석

• 단말장치(키보드 마우스 등)를 통하여 명령을 받고 커널이나 다른 여러 유틸• 단말장치(키보드, 마우스 등)를 통하여 명령을 받고 커널이나 다른 여러 유틸리티 프로그램을 실행

• 사용자는 Shell을 통하여 컴퓨터와 대화를 나눌 수 있음

Linux/UNIX Programmingby Yang-Sae MoonPage 8

UNIX/Linux UNIX/Linux 시스템시스템 구조구조 (2/2)(2/2)UNIX/Linux 시작

쉘과 명령어들컴파일러와 인터프리터들

Users

shell

커널에 대한 시스템 호출 인터페이스

컴파일러와 인터프리터들시스템 라이브러리들

shell

kernel신호(signal)단말기 처리단말기 구동기

파일 시스템디스크와 테이프 구동기

CPU 스케쥴링가상 기억장치

단말기 제어기 메모리 제어기장치 제어기

하드웨어에 대한 커널 인터페이스

단말기 제어기

단말기

메모리 제어기

실제 메모리

장치 제어기

디스크와 테이프

Linux/UNIX Programmingby Yang-Sae MoonPage 9

UNIX UNIX 제품제품 종류종류UNIX/Linux 시작

UNIX는 단일 제품이 아니라, 제품군을 의미하며 다음과 같은 두 가지특징을 공통으로 포함함

• 멀티태스킹(Multitasking): 유닉스 시스템이 한번에 하나 이상의 프로그램을 동시에 실행할 수 있음을 의미

• 멀티유저(Multiuser): 유닉스 시스템이 한번에 한 명 이상의 사용자를 동시에 지원할 수• 멀티유저(Multiuser): 유닉스 시스템이 한번에 한 명 이상의 사용자를 동시에 지원할 수있음을 의미

유닉스명 제조회사상용 UNIX 제품 유닉스명 제조회사

AIXBSD/OSHP-UX

IBMBerkeley Software Design(BSDI)Hewlett-Packard(HP)

상용 UNIX 제품

HP UXIrixOSF/1Solaris

Hewlett Packard(HP)Silicon GraphicsDigital Equipment Corporation(DEC)Sun Microsystems유닉스명

무료 UNIX 제품

SunOSTru64UltrixU i

Sun MicrosystemsHP Alpha Server SeriesDigital Equipment Corporation(DEC)N ll

유닉스명

FreeBSDLinuxNetBSD

Linux/UNIX Programmingby Yang-Sae MoonPage 10

Unixware Novell

UNIX UNIX 시작시작 (1/8)(1/8)UNIX/Linux 시작

사용자 명과 패스워드

시스템 관리자(System Manager System Administrator):• 시스템 관리자(System Manager, System Administrator):

유닉스 시스템의 관리와 유지/보수를 수행하는 사람

• 사용자명(User Id): 사용자를 구분할 수 있는 고유한 이름사용자명(User Id): 사용자를 구분할 수 있는 고유한 이름

• 계정(Account): 시스템을 사용할 허가 (각 사용자는 계정을 부여 받음)

패스워드(Password)• 패스워드(Password)

Linux/UNIX Programmingby Yang-Sae MoonPage 11

UNIX UNIX 시작시작 (2/8)(2/8)UNIX/Linux 시작

로그인 (유닉스로 작업 시작하기)

l i

• 사용자명(login name)을 입력하고 RETURN 키

login:

password:

• 패스워드를 입력하고 RETURN 키

Linux/UNIX Programmingby Yang-Sae MoonPage 12

UNIX UNIX 시작시작 (3/8)(3/8)UNIX/Linux 시작

로그인 예제 (실제 수행해 봅시다.)

Linux/UNIX Programmingby Yang-Sae MoonPage 13

UNIX UNIX 시작시작 (4/8)(4/8)UNIX/Linux 시작

로그인 후에 일어나는 일은?

• 시스템을 설명하는 간단한 정보메시지 출력시 템을 설명하는 간단한 정 메시지 출력

• 시스템 관리자가 어떻게 시스템을 설정했는가에 따라 다름

• 공지사항(Message of the Day)

- 시스템 관리자가 업데이트 하는 정보를 담고 있는 메시지 (/etc/motd)

- 사용자는 로그인 시 가장 최근에 새로이 추가된 항목을 볼 수 있음

Linux/UNIX Programmingby Yang-Sae MoonPage 14

UNIX UNIX 시작시작 (5/8)(5/8)UNIX/Linux 시작

로그인 후에 일어나는 일은? (계속)

System Information

Linux/UNIX Programmingby Yang-Sae MoonPage 15

Message of the Day

UNIX UNIX 시작시작 (6/8)(6/8)UNIX/Linux 시작

Shell Prompt

• Shell: 사용자의 명령을 읽고 해석하는 프로그램사용자의 명령을 읽 해석하는 램

• Shell이 다음 명령을 받아들일 준비가 되면, Prompt를 보여줌

• Prompt는 사용하고 있는 Shell에 따라 차이가 있음

− Default Prompt: C Shell(%, $), Korn Shell($), Bourne Shell, …

− User Defined Prompt: 사용자가 지정(.cshrc)하여 변경 가능함

• 끝내고자 할 때는 Shell Prompt 상에서 “logout” 또는 “exit”를 입력

Linux/UNIX Programmingby Yang-Sae MoonPage 16

UNIX UNIX 시작시작 (7/8)(7/8)UNIX/Linux 시작

Shell Prompt (계속)

Linux/UNIX Programmingby Yang-Sae MoonPage 17

UNIX UNIX 시작시작 (8/8)(8/8)UNIX/Linux 시작

로그 아웃 (유닉스 작업 마치기)

• 유닉스에서 작업을 마치려면 로그 아웃(Log out) 명령으로 세션을 마친다.유닉 에서 작업을 마치려면 아웃( g ) 명령 세션을 마친다

• 로그아웃:유닉스에게 현재 사용자명으로 로그인한 사용자가 작업을 마친다고 알리는 것

• 로그아웃 방법

− Shell Prompt 상에서 CTRL-D 키를 누름

l t 명령어를 사용− logout 명령어를 사용

− exit 명령어를 사용

UNIX는 대소문자를 구별한다.

• 도스(DOS)와 같은 운영체제와 달리, 유닉스는 대문자와 소문자를 구별함도스( OS)와 같은 운영체제와 달리, 유닉스는 대문자와 소문자를 구별함

• 사용자명, 패스워드 입력 시 대소문자 구별에 유의

Linux/UNIX Programmingby Yang-Sae MoonPage 18

간단한간단한 유닉스유닉스 작업작업 (1/11)(1/11)UNIX/Linux 시작

날짜 및 시각 확인하기 (date)

현재 로그인한 사용자 확인하기 (who)현재 로그인한 사용자 확인하기 (who)

디렉토리/파일 목록 보기 (ls)

파일 내용 보기 (cat more)파일 내용 보기 (cat, more)

패스워드 변경하기 (passwd)

과거 로그인한 이력 보기 (last)과거 로그인한 이력 보기 (last)

명령어 매뉴얼 보기 (man)

자신의 호 이름 기 (h )자신의 호스트 이름 보기 (hostname, uname)

배너 명령어 (banner)

Linux/UNIX Programmingby Yang-Sae MoonPage 19

간단한간단한 유닉스유닉스 작업작업 (2/11)(2/11)UNIX/Linux 시작

날짜 및 시각 확인하기 (date)

Linux/UNIX Programmingby Yang-Sae MoonPage 20

간단한간단한 유닉스유닉스 작업작업 (3/11)(3/11)UNIX/Linux 시작

현재 로그인한 사용자 확인하기 (who)

Linux/UNIX Programmingby Yang-Sae MoonPage 21

간단한간단한 유닉스유닉스 작업작업 (4/11)(4/11)UNIX/Linux 시작

디렉토리/파일 목록 보기 (ls)

Linux/UNIX Programmingby Yang-Sae MoonPage 22

간단한간단한 유닉스유닉스 작업작업 (5/11)(5/11)UNIX/Linux 시작

파일 내용 보기 (cat)

Linux/UNIX Programmingby Yang-Sae MoonPage 23

간단한간단한 유닉스유닉스 작업작업 (6/11)(6/11)UNIX/Linux 시작

파일 내용 보기 (more)

Linux/UNIX Programmingby Yang-Sae MoonPage 24

간단한간단한 유닉스유닉스 작업작업 (7/11)(7/11)UNIX/Linux 시작

패스워드 변경하기 (passwd)(Password는 최소 6문자 이상이어야 하며, 사전상의 단어나 고유명사는 피하는 것이 좋음)

Linux/UNIX Programmingby Yang-Sae MoonPage 25

간단한간단한 유닉스유닉스 작업작업 (8/11)(8/11)UNIX/Linux 시작

과거 로그인한 이력 보기 (last)

Linux/UNIX Programmingby Yang-Sae MoonPage 26

간단한간단한 유닉스유닉스 작업작업 (9/11)(9/11)UNIX/Linux 시작

명령어 매뉴얼 보기 (man)

Linux/UNIX Programmingby Yang-Sae MoonPage 27

간단한간단한 유닉스유닉스 작업작업 (10/11)(10/11)UNIX/Linux 시작

자신의 호스트 이름 보기 (hostname, uname)

Linux/UNIX Programmingby Yang-Sae MoonPage 28

간단한간단한 유닉스유닉스 작업작업 (11/11)(11/11)UNIX/Linux 시작

배너 명령어 (banner)

Linux/UNIX Programmingby Yang-Sae MoonPage 29

잘못잘못 입력한입력한 명령어명령어 수정하기수정하기 (1/3)(1/3)UNIX/Linux 시작

개요

• UNIX명령어 라인상에서 어떠한 명령어를 잘못 입력한 경우에 그 잘못된 명령명령어 라인상에서 어떠한 명령어를 잘못 입력한 경우에 잘못된 명령어를 수정하는 방법

• 일부 문자들은 유닉스 터미널에 입력되었을 때 특수하게 해석

• 이러한 문자들은 때때로 메타 문자라 호칭

$ stty –a 터미널 입력 환경(특히, 메타 문자 목록) 얻기

옵션 의 미

i t 인터럽트 (프로그램의 실행 중지)intr

erase

kill

인터럽트 (프로그램의 실행 중지)

한 문자를 지움(backspace)

현재 작업중인 줄을 모두 지움

werase

susp

마지막 단어를 지움

프로세스를 일시 중지

Linux/UNIX Programmingby Yang-Sae MoonPage 30

잘못잘못 입력한입력한 명령어명령어 수정하기수정하기 (2/3)(2/3)UNIX/Linux 시작

“stty –a”의 출력 예

Linux/UNIX Programmingby Yang-Sae MoonPage 31

잘못잘못 입력한입력한 명령어명령어 수정하기수정하기 (3/3)(3/3)UNIX/Linux 시작

실습하기 (다음과 같은 순서로 실습해 볼 것 – 단 UNIX에서…)

$ stty erase ^h backspace(^h)로 지정$ y p ( )로 지정

$ stty erase ^g 한문자를 지우는 것을 ^g로 지정

$ stty –a erase에 대한 변경된 메타 문자 확인에 대한 변경된 메타 문자 확인

$ stty kill j 한라인 삭제를 j 로 설정

$ dlfsdfsd j키로써 삭제 확인

$ stty kill ^u 다시 ^u로 설정

$ stty werase q q키로써 단어 삭제

$ test test test q키로써 단어 삭제 확인

$ stty werase ^w 원래 설정 값으로 복귀

Linux/UNIX Programmingby Yang-Sae MoonPage 32

.cshrc .cshrc 파일파일 (1/3)(1/3)UNIX/Linux 시작

로그인(C Shell 가정)할 때 자동적으로 실행되는 파일

자신의 환경(Prompt 형식, 명령어 Alias 등)을 설정하기 위해서 사용

Prompt 상에서 .cshrc 파일 실행하는 명령어(source)

$ source .cshrc

Linux/UNIX Programmingby Yang-Sae MoonPage 33

.cshrc .cshrc 파일파일 (2/3)(2/3)UNIX/Linux 시작

Linux/UNIX Programmingby Yang-Sae MoonPage 34

.cshrc .cshrc 파일파일 (3/3)(3/3)UNIX/Linux 시작

내 .cshrc 파일을 어떻게 작성하고 수정하지?

Linux/UNIX Programmingby Yang-Sae MoonPage 35

Homework #0Homework #0UNIX/Linux 시작

실습 및 숙제를 위하여 UNIX 환경을 구축할 것

학과의 서버 활용(계정 받아서 활용)하거나• 학과의 서버 활용(계정 받아서 활용)하거나

• 자신이 Access 가능한 다른 서버를 활용해도 무관

제출물: 없음

이후 실습과 숙제를 위해 필수적 요소이므로, 꼭 스스로 실천하세요.

Linux/UNIX Programmingby Yang-Sae MoonPage 36