3. 운영체제복습 리눅스소개 파일작업명령어 기본관리명령어 사용자관리 순천향대학교컴퓨터공학과이상정 1 운영체제복습 순천향대학교컴퓨터공학과이상정 2
운영체제 (Operating System, OS) 란? 운영체제란? 컴퓨터하드웨어관리하는프로그램 컴퓨터사용자와컴퓨터하드웨어사이의중재자역할을하는프로그램 운영체제목표 사용자프로그램을실행 컴퓨터시스템을사용자가편리하고용이하게사용하여문제해결 컴퓨터하드웨어를효율적으로관리 순천향대학교컴퓨터공학과 3 운영체제의정의 운영체제는자원할당기 (resource allocator) 모든자원들을관리하고스케쥴 (schedule) 서로상충되는요청들을조정하여효율적이고공정하게자원을사용 운영체제는제어프로그램 (control program) 컴퓨터부적절한사용과에러를방지하도록프로그램들의실행을제어 운영체제는커널 (kernel) 컴퓨터상에서항상실행되는프로그램 항상메모리에상주 (memory resident) 다른프로그램들 ( 시스템프로그램또는응용프로그램 ) 은운영체제에종속 순천향대학교컴퓨터공학과 4
커널 (Kernel) 운영체제의핵심은커널 (kernel) 커널은컴퓨터시스템의자원을관리하고서비스제공 메모리에상주하여시스템의구동에필요한환경을만들고관리하는운영체제의핵심소프트웨어 시스템호출인터페이스아래와물리적하드웨어위의모든것이커널 커널은시스템호출을통해파일시스템, CPU 스케줄링, 메모리관리그리고다른운영체제기능을제공 자원 (resource) 물리적자원 : 프로세서, 메모리, 디스크, 터미널, 네트워크등과같은시스템구성요소들과주변장치 추상적자원 : 태스크와쓰레드, 페이지 (page) 와세그먼트 (segment), 파일및 inode, 통신프로토콜및패킷등, 보안혹은사용자계정에따른접근제어등 순천향대학교컴퓨터공학과이상정 5 커널구조 모노리딕커널 (monolithic kernel) 컴퓨팅자원관리에필요한모든기능을하나로통합한커널 구현하기어렵고또유지보수하기도어려움 계층적커널 (hierarchical kernel) 커널이여러개의계층분할 계층들은단지자신의하위계층들의서비스와기능 ( 연산 ) 들만을사용하도록선택 마이크로커널 (microkernel) 모든중요치않은구성요소를커널로부터제거하고, 그들을시스템및사용자수준프로그램으로구현하여운영체제를구성 사용자공간과커널공간과의통신오버헤드 ( 메시지전달 ) 때문에성능이감소 최근의운영체제는커널을모듈 (Module) 로구현 순천향대학교컴퓨터공학과이상정 6
모듈 (Module) 모듈구조 객체지향프로그래밍기법을사용 커널은핵심적인구성요소의집합을가지고있고부팅때또는실행중에부가적인서비스들을링크 동적적재모듈을사용 커널의각부분이정의되고보호된인터페이스를가진다는점에서계층적구조와비슷하지만임의의모듈을호출할수있다는점에서계층적구조보다유연함 중심모듈은단지핵심기능만을가지고있다는점에서는마이크로커널과유사하지만통신하기위하여메시지전달을호출할필요가없기때문에더효율적 순천향대학교컴퓨터공학과이상정 7 시스템호출 (System Call) 시스템호출 (system call) 은사용자프로그램이자신을대신하여운영체제가수행하도록예약되어있는작업들을운영체제에게요청 시스템호출시커널모드로변경되고, 복귀시사용자모드로리셋 순천향대학교컴퓨터공학과 8
프로세스관리 (Process Management) 프로세스는실행중인프로그램 프로세스는자신의일을수행하기위해 CPU 시간, 메모리, 파일, 그리고입 / 출력장치를포함한여러가지자원이필요 단일쓰레드 (thread) 프로세스는다음수행할명령을지정하는하나의프로그램계수기 (program counter) 를가짐 다중쓰레드프로세스는복수개의프로그램계수기를가짐 운영체제는프로세스관리와연관해다음과같은활동에대한책임 사용자프로세스와시스템프로세스의생성과제거 프로세스의일시중지와재수행 프로세스동기화 (synchronization) 를위한기법제공 프로세스통신을위한기법제공 교착상태 (deadlock) 처리를위한기법제공 순천향대학교컴퓨터공학과 9 메모리관리 (Memory Management) 주메모리는 CPU 와입 / 출력장치에의하여공유되는, 빠른접근이가능한데이터의저장소 실행되는모든명령들과데이터는메모리내에상주 폰노이만방식컴퓨터 운영체제는메모리관리와관련하여다음과같은일을담당 메모리의어느부분이현재사용되고있으며누구에의해사용되고있는지를추적 어떤프로세스 ( 또는그일부 ) 들을메모리에적재하고제거할것인가를결정 필요에따라메모리공간을할당 (allocation) 하고회수해야한다. 순천향대학교컴퓨터공학과 10
저장장치관리 (Storage Management) 주메모리는모든데이터와프로그램을수용하기에용량이너무작고, 전원이꺼질경우데이터가소멸되므로주메모리내용을저장 (backup) 하기위해보조저장장치 (secondary storage ) 가필요 대부분의현대의컴퓨터시스템은디스크 (disk) 를프로그램과데이터를위한주된온라인저장매체로사용 운영체제는디스크관리를위하여다음과같은기능을담당 자유공간 (free space) 의관리 저장장치할당 디스크스케줄링 순천향대학교컴퓨터공학과 11 입 / 출력시스템관리 (I/O System Management) 입 / 출력시스템은다음과같이구성 버퍼링 (buffering): 전송중데이터를임시저장 캐싱 (caching): 데이터의일부를고속의저장장치에저장 스풀링 (spooling): 한작업의출력을다른작업의입력과중첩 일반적인장치드라이버인터페이스 특정하드웨어장치들을위한드라이버 순천향대학교컴퓨터공학과 12
사용자운영체제인터페이스 (1) 명령어라인해석기 (command line interpreter, CLI) 운영체제가수행할명령어를직접입력하는수단제공 명령어해석기의주요기능은사용자가지정한명령을해석하고수행하는것 커널에구현되거나시스템프로그램으로제공 선택할수있는여러명령어해석기를제공하는시스템에서이해석기는셸 (shell) 이라고함 UNIX나 Linux시스템에서는 Bourne shell, C shell, Bourne Again shell, Korn shell 두가지구현방법 명령어해석기자체가명령을실행할코드를내장 시스템프로그램에의해대부분의명령을구현 명령어해석기는명령에해당하는시스템프로그램을찾아서실행 순천향대학교컴퓨터공학과 13 사용자운영체제인터페이스 (2) 그래피컬사용자인터페이스 (Graphical User Interface, GUI) 마우스를기반으로하는윈도우메뉴시스템 1970년대초 Xerox PARC 연구센터개발 1973년에출시된 Xerox Alto 컴퓨터에처음등장 대부분의시스템이 CLI 와 GUI 모두제공 Microsoft Windows는 CLI "command" 을갖는 GUI Apple Mac OS X 는 UNIX 커널의하부구조와 CLI 셀을갖는 "Aqua" GUI UNIX/Linux 다양하고강력한셸인터페이스제공 X 윈도우시스템, Common Desktop Environment(CDE), K Desktop Environment(KDE), GNU 프로젝트의 GNOME 순천향대학교컴퓨터공학과 14
리눅스소개 순천향대학교컴퓨터공학과이상정 15 리눅스역사 1980 년대 Richard Stallman 이시작한공개소프트웨어운동에의하여 GNU 프로젝트가탄생 1987년핀란드헬싱키대학의교수 Andrew S. Tanenbaum에의해유닉스의일종이며공개소스운영체제인 Minix 가개발 1991년헬싱키대학의학생인 Linus Torvalds가 Minix와유사한공개유닉스커널을개발한후 GNU 허가아래인터넷에공개된것이버전 0.01 로리눅스의시작 초기리눅스는 386 CPU와 AT 하드디스크만지원 인터넷의확산과공개소프트웨어운동에의하여전세계수많은프로그래머들에의하여지속적으로급속한진전 2001년커널버전 2.4이발표된후대중화 2003년말에발표된 2.6 커널버전 향상된성능과확장성, 입출력처리능력 엔터프라이즈서버영역부터손목시계와같은임베디드기기까지보다광범위한활용성 2012년커널버전 3.0 발표
커널버전 커널버전번호 linux-x x.y.z.tar.gz yztargz x: 주버전번호로리눅스골격자체의획기적인변화를의미 y: 부버전번호이며홀수이면개발중인커널이고짝수이면안정된커널 z: 릴리스번호로추가된기능은없지만오류수정등에의한작은변화를의미 최신안정화커널버전은 4.0 (2015 년 3 월기준 ) 우분투설치버전은 3.2.0 ( 우분투 14.0 기준 ) www.kernel.org 순천향대학교컴퓨터공학과이상정 17 리눅스장점 완벽한멀티유저, 멀티태스킹시스템 뛰어난안정성 완전공개시스템 GNU 공용라이센스 (GPL, GNU Public License) 강력한네트워크지원 TCP/IP, SLIP/PPP, IPX, AppleTalk, ISDN, Ethernet, FDDI 등 빠른업그레이드 풍부한소프트웨어 네트워크기반의 X-Window 제공 사용자를위한여러가지공개문서들 (LDP, FAQ, HOWTO 등등 ) 순천향대학교컴퓨터공학과이상정 18
리눅스배포판소개 리눅스배포판 (distribution) 커널을기초로하여시스템을운영하고활용할수할수있는소프트웨어패키지들을편리하게모아놓은것 C 컴파일러등개발도구, 에디터, GUI, 네트워크도구등 배포판에포함되는소프트웨어들은공개소프트웨어를설치가용이한패키지형태로구성 배포판종류 우분투 (Ubuntu, http://www.ubuntu.com/) 젠투 (Gentoo, http://www.gentoo.org/) 레드햇 (Red Hat, http://www.redhat.com/ ) 데비안 (Debian, http://www.debian.org/) 수세 (SuSE, http://www.suse.com/) 와우리눅스 (http://www.wowlinux.com ) 한컴리눅스 (http://kr.hancom.com/) 순천향대학교컴퓨터공학과이상정 19 우분투 (Ubuntu) 리눅스소개 데비안 (Debian) 기반 GNU/ 리눅스배포판 Canonical 사에서설계 데스크탑과서버용우분투 우분투라는이름은남아프리카의반투어에서유래된말로 " 너가있으니내가있다 " 를뜻함 우분투주요특징 APT(Advanced Package Tool) 계열소프트웨어관리툴사용 기본윈도우관리자로 GNOME 데스크탑사용 root 사용자계정대신 sudo 사용 순천향대학교컴퓨터공학과이상정 20
Free Software 1980 년대초반리차드스톨만 (Richard Stallman, http://www.stallman.org) 에의해시작된움직임 FSF(Free Software Foundation) 설립 컴퓨터프로그램에대한복사, 배포, 이해, 수정에대한모든제한의철폐를목표 모든소프트웨어는자유 (free) 로워야한다 자유로운사용 소스코드공개 대표적인프로젝트가 GNU(GNU s NotUNIX)/Linux 프로젝트 http://www.gnu.org/ 순천향대학교정보기술공학부이상정 21 GPL GNU 공용라이센스 (GNU Public License) 출시되는소프트웨어는무료이며아무도이자유를빼앗을수없다고명시 소프트웨어를이익을위해서다시파는것은허용 판매자는변경한사항을모두포함해서소스코드를전부공개 재판매된패키지도역시 GPL 의적용을받기때문에이것도무료로배포될수있을뿐만아니라이익을위해서다시팔릴수도있음 프로그래머들은자신의소프트웨어로인해발생하는어떤위험이나손해에도법률적책임을지지않음 기타라이센스 BSD 와아파치 (Apache) 같은다른라이센스 소프트웨어의코드를변경하고변경한코드를공개하지않고배포 http://www.opensource.org org 참조 순천향대학교정보기술공학부이상정 22
리눅스커널구조 순천향대학교컴퓨터공학과이상정 23 리눅스커널기능 (1) 프로세스관리 프로세스의생성및소멸 프로세스사이의통신 프로세스스케줄링동기화 제한된자원에대한다중프로세스의효율적인관리기법제공 메모리관리 가상메모리관리기법제공 메모리하드웨어의효율적관리 파일시스템관리 가상파일시스템 (VFS: Virtual File System) 에의한다양한파일시스템지원 디스크의물리적구조를논리적구조로표현하는기법 파일및디렉토리관리 블록입출력을위한버퍼캐쉬관리기법제공
리눅스커널기능 (2) 디바이스관리 입출력요청작업의검증및스케줄링 주변장치와메모리간의자료전송 제어기관리 인터럽트요청및처리 네트워크관리 통신프로토콜구현 네트워크라우팅및주소지정 네트워크제어기관리 리눅스커널소스구조 순천향대학교컴퓨터공학과이상정 26
커널소스디렉토리 (1) arch 시그널처리및클럭처리와같은프로세서의종속적인코드로구성 프로세서종류마다별도의하위디렉토리 ( 예를들면, i386, arm, m68k 등 ) 로존재 init 하드웨어에독립적인커널초기화루틴으로구성 kernel 리눅스커널의핵심디렉토리 태스크의생성과소멸, 스케줄링, 시그널처리및시간관리루틴등에관련된하드웨어독립적인커널의주요시스템호출과관리루틴으로구성 mm 가상메모리관리 페이징및스와핑등에관련된하드웨어독립적인메모리관리루틴으로구성 fs 태스크관련시스템호출처리루틴혹은가상파일시스템관리루틴으로구성 특정파일시스템관리루틴은하위디렉토리존재 순천향대학교컴퓨터공학과이상정 27 커널소스디렉토리 (2) drivers 각디바이스를제어하기위한드라이버루틴으로구성 문자 / 블록 / 네트워크드라이버등으로구분하여별도의하위디렉토리로관리 ipc 프로세스사이의통신을지원하기위한루틴으로구성 세마포어, 공유메모리, 메시지큐등을지원 net TCP/IP 및 ARP 등네트워크통신프로토콜관련루틴으로구성 include 커널헤더로구성 하드웨어독립적인헤더는 include/linux/ / 에존재하며, 하드웨어종속적인헤더는 include/asm 하드웨어이름 / 에존재 scripts 커널구성및컴파일할때이용되는스크립트파일로구성 lib 보조함수및스트링및압축등에관련된커널라이브러리루틴으로구성 Documentation 커널프로그래머를위한기술적문서로구성 순천향대학교컴퓨터공학과이상정 28
리눅스부팅과정 (1) 순천향대학교컴퓨터공학과이상정 29 리눅스부팅과정 (2) 1. 전원이공급 2. ROM BIOS(Basic Input Output System) 실행 시스템의이상유무를점검하고하드웨어를초기화 MBR(Master Boot Record) 에저장되어있는 GRUB 혹은 LILO와같은부트로더프로그램을메모리에적재 부트로더에게제어권을넘겨주는역할을한다. 3. 부트로더 (Boot Loader) 부트로더설정파일을참조하여운영체제를선택 선택된커널을메모리에적재한다음커널에게제어권을넘김 4. 리눅스커널 하드웨어장치의점검및초기화 루트파일시스템을검사후마운트 최초의프로세스인 /sbin/init 코드를실행 순천향대학교컴퓨터공학과이상정 30
리눅스부팅과정 (3) 5. init 프로세스 운영체제를초기화 /etc/inittab 설정파일을해석하여지정된작업을수행 sysinit 스크립트를실행하여기본경로설정, 시리얼포트초기화, 네트워크초기화, proc 파일시스템마운트등과같이시스템을초기화 실행수준 (run level) l) 에따라적절한서버데몬을실행 gettty 프로세스에의하여사용자로그인프롬프트가발생 X 매니저에의하여 X 윈도우를실행 파일작업명령어 순천향대학교컴퓨터공학과이상정 32
리눅스파일시스템구조 트리구조파일시스템 파일과디렉토리의계층적구조 최상위는항상루트 (root) 디렉토리에기반 홈디렉토리 홈디렉토리 시스템관리자가사용자를등록할때기본적으로주어지는전용공간 기본적으로 "/home/userid" 형식으로생김 사용자의홈디렉토리식별하는 $HOME 이라는환경변수를지정 홈디렉토리환경설정파일 ".profile", ".login", ".bashrc", ".cshrc"
디렉토리경로 절대경로와상대경로 절대경로 : 모든경로명을반드시루트디렉토리인 "/" 로시작되어특정한파일이나디렉토리를표시 상대경로 : 현재작업디렉토리에대해상대적인경로이름이용 디렉토리경로 절대경로 디렉토리 A B C 절대경로이름 /usr /export/home/knd1/test /export/home/home 상대경로 디렉토리 A B 상대경로이름../../../usr../knd1/test C../
ls 명령어 순천향대학교컴퓨터공학과이상정 37 cd 명령어 칟ㅁㄱ $ pwd => 현재작업중인디렉토리보기 순천향대학교컴퓨터공학과이상정 38
파일의생성및보기 문서편집기이용 vi, emacs, gedit cat(catenate) 와리다이렉션 (redirection) 파일새로만들기 / 덮어쓰기 $ cat > test.dat This is a test file. Soonchunhyang University ^D 파일에연속쓰기 $ cat >> test.dat Computer Engineering ^D cat, 파일내용을화면에출력 $cattestdat test.dat 순천향대학교컴퓨터공학과이상정 39 파일내용보기 more, 한번에한화면씩내용보기 $ more /etc/bash.bashrc 다음화면전환시 < 스페이스바 > 누름 종료시 <q> 누름 head, tail head -n 파일 : 처음 n 줄 (default=10) 보기 tail -n 파일 : 마지막 n 줄 (default=10) 보기 $ head /var/log/messages $ tail-20 /var/log/messages 순천향대학교컴퓨터공학과이상정 40
파일복사 cp(copy), 파일복사 cp [ 옵션 ] 소스파일목적파일 소스파일을목적파일에복사 cp 의옵션 설명 -f 강제적인복사이다. 목표파일이이미존재하고있어도확인을요구하지않는다. -i 대화형복사이다. 각파일을복사하기전에사용자에게정말로복사할것인지를확인한다. $ cp test.dat copydata 순천향대학교컴퓨터공학과이상정 41 파일이동 (1) mv(move), 파일이동 ( 이름변경 ) mv 소스파일목적파일 소스파일의이름을목적파일의이름으로변경 mv 소스파일들 디렉토리 소스파일들을디렉토리로이동 mv 의옵션 설명 -f 강제적인이동이다. -i 대화형이동이다. $ mv copydata test.txttxt $ mkdir test => make directory, 디렉토리생성 $ ls $ mv test.dat test.txt test $ ls test 순천향대학교컴퓨터공학과이상정 42
파일이동 (2) $ cd test => change directory, 디렉토리이동 $ mv test.*.. =>.. 는상위디렉토리,. 는현재디렉토리표시 $ ls $ cd.. $ ls $ rmdir test => remove directory, 디렉토리제거 $ ls 순천향대학교컴퓨터공학과이상정 43 파일삭제 순천향대학교컴퓨터공학과이상정 44
링크만들기 (1) ln, 링크만들기 만들기 ln [-s] 원본파일링크파일 원본파일을가리키는링크파일생성 -s 옵션시심볼릭 ( 소프트 ) 링크 링크의종류 하드링크 (hard link) 원래의파일과동일한 i-node를가리킴 i-node 는파일의속성과디스크상의위치에대한정보를갖고있는커널구조체 원본파일이동시에도원본파일에접근가능 심볼릭링크 (symbolic link) 새로운 i-node 생성되어원본파일과연결 다른파티션뿐만아니라다른네트워크장치상에있는파일도링크 원본파일이동시접근못함, 윈도우바로가기유사 순천향대학교컴퓨터공학과이상정 45 링크만들기 (2) $ ln test.dat testlink $ ln s test.dat softlink $ ls $cattestlink testlink $ cat softlink 순천향대학교컴퓨터공학과이상정 46
파일권한변경하기 (1) chmod, 파일권한변경하기 파일의허가권은네개의부분으로나누어져있다. 파일타입 소유자 (user) 그룹 (group) 기타사용자 (others) 기호로표시한허가권예 : 문자허가권값 --- 허가권이없음 0 r-- 읽기만가능 4 rw- 읽기 / 쓰기가능 6 rwx 읽기 / 쓰기 / 실행가능 7 r-x 읽기 / 실행가능 5 --x 실행만가능 1 문자허가권값 (8 진수 ) R 읽기 (Read) 4 W 쓰기 (Write) 2 X 실행하기 (Execute) 1 순천향대학교컴퓨터공학과이상정 47 파일권한변경하기 (2) 허가권숫자값설명 -rw------- 600 소유자에게만읽기 / 쓰기허가권이있음. 대부분파일은이렇게설정된다. -rw-r--r-- 644 소유자에게읽기 / 쓰기허가권이있고, 그룹과기타사용자에게는읽기허가권만있음. 소유자 외의다른사용자들은이파일을읽기만하도록하고싶을때많이사용하는권한이다. -rw-rw-rw- 666 모든사용자들에게읽기 / 쓰기권한을부여한다. 이조합은시스템의모든사람이파일을접근하 여수정할수있으므로보안상권하고싶지않은허가권이다. -rwx------ 700 소유자가읽기 / 쓰기 / 실행허가권이있음. 소유자가실행하려는프로그램파일에사용함.( 보통 C 또는 C++ 프로그램의실행파일에사용한다.) -rwxr-xr-x 755 소유자가읽기 / 쓰기 / 실행허가권이있음. 다른모든사용자는읽기 / 실행허가권이있음. -rwxrwxrwx 777 모든사람이읽기 / 쓰기 / 실행허가권이있음. 666 설정과마찬가지로피하는것이좋다. -rwx--x--x x x 711 소유자가읽기 / 쓰기 / 실행허가권이있음. 다른사람은실행권한만있음. 다른사람이실행만하 고복사는못하게하고싶을때유용하다. drwx------ 700 이것은 mkdir 명령어를사용하여만든디렉터리를나타낸다. 오직소유자만이이디렉터리를읽기 / 쓰기할수있고진입할수있디. 모든디렉터리에는실행권한이적어도하나는세팅되어있어야진입할수있다. drwxr-xr-x 755 이디렉터리는소유자에의해서만변경될수있다.( 즉, 디렉터리안에파일이나서브디렉터리 를만들수있다.) 다른사용자들은이디렉터리로진입할수있고디렉터리엔트리들을읽어볼수도있다. drwx--x--x 711 모든사용자들이디렉터리로진입할수는있지만기카사용자들은디렉터리엔트리들을읽어볼수는없다. 따라서, 소유자를제외한기타사용자들은이디렉터리내에서 ls 명령을수행할수없다. 이디렉터리내의파일은파일이름을정확히아는사용자만이읽을수있을것이다. 표. 파일허가권조합 순천향대학교컴퓨터공학과이상정 48
권한변경하기 (3) chmod [-R] change,{change}* {filename}+ 허가권변경 clusterselection+newpermission ( 허가권추가 ) clusterselection-newpermission ( 허가권제거 ) clusterselection=newpermission ( 절대적허가권할당 ) clusterselection: u(user/owner) g(group) o(others) a(all) newpermission: r(read) w(write) x(execute) 예 -rw-rw-r-- 2 lee lee 21 3 월 22 14:34 test.dat $ chmod u+x,g-w,o-r test.dat => -rwxr----- 2 lee lee 21 3 월 22 14:34 test.dat 순천향대학교컴퓨터공학과이상정 49 권한변경하기 (4) chmod [-R] octal {filename}+ 8진수로권한설정 예 -rw-rw-r-- 2 lee lee 21 3 월 22 14:34 test.dat $ chmod 740 test.dat => -rwxr----- 2 lee lee 21 3월 22 14:34 test.dat 순천향대학교컴퓨터공학과이상정 50
파일찾기 find 디렉토리트리에서파일을찾고자할때사용 검색을위한다양한조건을명식가능 일반적인사용법 $ find start_dir [options], start_dir : 탐색을시작할디렉토리 예1: /etc 이하디렉토리에서 pass 로시작하는파일의경로찾기 $ find/etc-name name pass* -print /etc/passwd /etc/pam.d/passwd 예2: /usr/src 이하디렉토리에서이름이 core인모든파일을찾아삭제 $ find /usr/src -name core -exec rm locate 파일이름으로간단하게파일을찾는명령 순천향대학교컴퓨터공학과이상정 51 파일 / 명령어위치보기 which, 파일의위치보기 인자로준파일을찾기위해경로를검색 찾고자하는파일의전체경로 (full path) 를알아볼때유용함 find 명령어와의차이점 which는환경변수에설정되어있는실행경로 (path) 만검색 예 $ which h passwd /usr/bin/passwd whereis, 명령어위치보기 환경변수에등록되어있는각종경로를검색하여명령어및매뉴얼위치검색 예 $ whereis useradd useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz 순천향대학교컴퓨터공학과이상정 52
리다이렉션 (Redirection) 프로그램의 ( 표준 ) 출력을파일로보내거나입력하는기능 overwrite (>), append (>>) / input(<) 예 $ ls > test.out $ ls $ cat test.dat >> test.out $ grep root < /etc/passwd root:x:0:0:root:/root:/bin/bash grep string file file 에서 string 이포함된줄을출력 순천향대학교컴퓨터공학과이상정 53 파이프 (pipe) 와다중명령어 프로그램의 ( 표준 ) 출력을다른프로그램의 ( 표준 ) 입력으로보낼수있는메커니즘 로표시 예 $ ls /etc more $ ls /etc grep "pass " passwd passwd- 세미콜론 (;) 을사용하여같은라인에여러개의명령어들을한꺼번에입력 예 $ ls l $ cat /etc/passwd => $ ls -l; cat /etc/passwd 순천향대학교컴퓨터공학과이상정 54
백그라운드명령 백그라운드 (background) 명령끝에 & 입력 프로세스 ( 명령 ) 의종료기다리지않고바로다음명령기다리는프롬트상태 실행이긴프로세스 ( 명령 ) 에유용 & 없는일반명령실행은포그라운드 (foreground) 라함 순천향대학교컴퓨터공학과이상정 55 프로세스상태확인 프로세스상태확인 (ps) 일반형식 ps [-] [ options ] 주요옵션 e,a: 모든프로세스 f: 절대경로표시 l : 긴형식으로표시 u : 실행유저와실행시간표시 j : 작업제어 (job control) 형식으로표시 s : 시그널형식으로표시 m : 메모리정보 a : 다른사용자의프로세스 x: 터미널제어없는프로세스
프로세스종료시키기 프로세스종료시키기 (kill) 일반형식 주요옵션 kill [-s signal ] process_id -s 또는 -number : 프로세스에시그널번호를보낸다 -9 를사용할경우프로세스를강제로종료시킨다 vi 소개 화면단위편집기 vi의시작 $ vi filename $ vi-r filename( 읽기전용 ) 프로그램의상태가명령모드와입력모드로구분 명령모드는편집기제어명령 입력모드는실제문자입력 처음시작시명령모드로진입 명령모드에서입력모드변환은삽입명령후전환 입력모드에서명령모드는 <ESC> 로전환 이후명령모드키입력은 <key> 로표시 순천향대학교컴퓨터공학과이상정 58
순천향대학교컴퓨터공학과이상정 59 시작및종료 $ vi test.txt t t t <i> This is test text file <ESC> <Z><Z> $ 삽입명령 <i> 커서위치삽입 <o> 다음줄삽입 순천향대학교컴퓨터공학과이상정 60
커서이동및삭제명령 <h> 왼쪽 <l> 오른쪽 <j> 아래 <k> 위로 <x> 커서위치한글자삭제 <dd> 커서위치한줄삭제 <yy> 커서위치한줄복사 <> <p> 붙여넣기 순천향대학교컴퓨터공학과이상정 61 사용예 $vitesttxt test.txt <l> <l> <l> <l> <l> <l> <l> This is <i>a <ESC><o>test text file Using vi editor is not easy but fun.<esc><y><y> <p> Using vi editor is not easy but fun. <d><d> <Z><Z> $ 순천향대학교컴퓨터공학과이상정 62
기본관리명령어 순천향대학교컴퓨터공학과이상정 63 수퍼유저권한사용 리눅스시스템의많은기능들을수퍼유저라불리는 root 계정에만제한 수퍼유저권한사용방법 root 계정으로로그인 su 명령사용하여 root 계정권한획득 sudo 명령어사용해 root 권한으로명령어실행 사용예 test.dat 파일의사용자소유권변경예 chown username filename 파일 filename의소유권을사용자username으로지정 순천향대학교컴퓨터공학과이상정 64
sudo 사용예 순천향대학교컴퓨터공학과이상정 65 APT 패키지관리도구 우분투에서는패키지를설치및관리를위해 APT (Advanced Package Tool) 소프트웨어관리도구를사용 패키지저장소 (repository) 에서패키지를다운로드받고설치 패키지저장소 (repository) 패키지와패키지정보등을저장하여집중관리하는서버 저장소의위치 ( 패키지인덱스정보 ) 는 /etc/apt/sources.list 파일에저장 저장내용형식 deb[deb-src] URI release section deb http://kr.archive.ubuntu.com/ubuntu/ precise main restricted deb-src http://kr.archive.ubuntu.com/ubuntu/ precise multiverse 순천향대학교컴퓨터공학과이상정 66
APT 패키지관리명령 apt-get install package 패키지를다운로드받아설치 apt-get source package 소스코드다운로드 apt-get remove package 설치된패키지를삭제 apt-get update 패키지인덱스정보업데이트, 인덱스는 /etc/apt/sources.list 에저장 apt-get upgrade 설치되어있는패키지를검사하여최신버전으로업그레이드 apt-get t search package 설치되어있는패키지검색 apt-cache pkgnames 또는 dpkg -l 시스템에설치되어있는모든패키지목록을보여줌 apt-cache stats 설치된패키지의상태정보출력 apt-cache show package 패키지에대한소프트웨어정보출력 순천향대학교컴퓨터공학과이상정 67 순천향대학교컴퓨터공학과이상정 68
/etc/apt/sources.list 순천향대학교컴퓨터공학과이상정 69 저장소추가 /etc/apt/sources.list 에저장소를추가 추가하기전기존저장소백업 $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 추가후업데이트 $ sudo apt-get update 추가방법 기존의파일의주석 (#) 을제거 add-apt-repository apt 명령사용 $ sudo add-apt-repository " deb http://kr.archive.ubuntu.com/ ubuntu/ precise main restricted" ppa(personal package archive) 추가 우분투공식패키지저장소에없는개인패키지저장소 add-apt-repository ppa:<repository-name> $ sudo add-apt-repository ppa:ondrej/php5 순천향대학교컴퓨터공학과이상정 70
구버전우분투저장소변경 우분투버전지원 일반버전 9개월 LTS (long term support) 버전 5년 버전중단후중단에는패키지저장소이동 오드로이드보드 구버전 13.04 인경우 패키지저장소를 old-releases l 저장소로다음과같이변경 # $ cd /etc/apt # sed -i, 's,http://ports.ubuntu.com/ubuntu-ports/,http://old-releases. ubuntu.com/ubuntu,g' sources.list #apt-get update 순천향대학교컴퓨터공학과이상정 71 gzip / gunzip 명령어 순천향대학교컴퓨터공학과이상정 72
gzip / gunzip 명령어사용예 순천향대학교컴퓨터공학과이상정 73 tar 명령어 순천향대학교컴퓨터공학과이상정 74
tar 명령어사용예 (1) 순천향대학교컴퓨터공학과이상정 75 tar 명령어사용예 (2) 순천향대학교컴퓨터공학과이상정 76
도움말 도움말찾기 man Info 예 $ man grep $infogrep 온라인매뉴얼 http://man.he.net/ 순천향대학교컴퓨터공학과이상정 77 사용자관리 순천향대학교컴퓨터공학과이상정 78
사용자 리눅스에서모든파일과프로그램은어떤사용자 (user) 에의해소유 사용자 ID(UID) 라불리는고유한숫자로식별됨. 각사용자는적어도하나의그룹 ( 시스템관리자가만드는사용자들의집합 ) 에소속 사용자의권한 일반사용자 자신이접근할수있도록허용된자원만접근가능 root 사용자 (root user): 슈퍼유저 모든자원에액세스가능 /etc/passwd 파일에사용자계정정보등록 순천향대학교컴퓨터학부이상정 79 홈디렉토리 (Home Directories) 각사용자가다른사용자의구성환경을방해하지않으면서 ( 여러사용자가시스템에동시에로그인할지라도 ) 자신만의환경에서실행할수있도록해주는역할 자신들의설정파일 / 일상적인작업파일을저장. 홈디렉토리의위치 일반적으로 /home 에각사용자들의로그인이름의디렉토리예 )/home/lee 사용자의홈디렉토리는관리자가변경가능 /etc/passwd 파일에등록 useradd 명령의 d 옵션사용하여변경 순천향대학교컴퓨터학부이상정 80
셀 (shell) (1) 셀이란? 명령어라인해석기 (command line interpreter, CLI) 운영체제가수행할명령어를직접입력하는수단제공 셀프로그램의종류 Bourne shell: /bin/sh Bourne-Again shell: /bin/bash Korn shell: /bin/ksh (Bourne Shell 포함 ) C shell: /bin/csh ( 대화형작업에유리 ) 일반적인프롬트구분 $ (Bourne shell, Korn shell) % (C shell) 순천향대학교컴퓨터학부이상정 81 셀 (shell) (2) 셀의선택 디폴트로그인셀은시스템관리자가지정 /etc/passwd /p 패스워드파일에등록되어있는셀프로그램의미 chsh (change shell) 명령으로디폴트셀 $ chsh s /bin/csh => /bin/csh 이없는경우 apt-get install csh 로설치 로그아웃후다시로그인 %ps로확인 다시bash로회복하려면csh대신bash로위과정반복 $SHELL: 로그인 shell 절대경로저장 $ echo $SHELL 순천향대학교컴퓨터학부이상정 82
셀스크립트 (shell script) 셀명령들의리스트로작성된프로그램 test.sh 예 #!/bin/sh <- 해당스크립트를실행할인터프리터의절대경로와실행옵션을지정 #testshell shell <- # 은주석표시 pwd ls l $chmod+x test.sh testsh <- 실행권한부여 $./test.sh <- 스크립트실행 순천향대학교컴퓨터공학과이상정 83 test.sh 실행예 순천향대학교컴퓨터공학과이상정 84
hello.sh 예 #!/bin/sh echo "What is your name?" PERSON="Lee" echo "Hello, $PERSON" <- 변수값지정 <- 변수참조 순천향대학교컴퓨터공학과이상정 85 시작스크립트 시작스크립트 (Startup Scripts) 과거도스 (DOS) 의 autoexec.bat, config.sys 파일과유사 리눅스같은다중사용자환경에서는사용자는자신만을위한환경설정파일들을소유해야함 사용자별환경설정파일은셀스크립트의형태로존재 시작스크립트는사용자가로그인할때셀이실행할일련의명령들이저장 시작스크립트파일은사용자의홈디렉터리에존재 사용자계정을만들때는사용자가로그인시사용할기본닷파일들을관리자가제공해야한다. 리눅스에있는정식도구를사용하여사용자계정을만든다면이도구들이자동으로생성 순천향대학교컴퓨터학부이상정 86
bash 시작스크립트 Bourne-Again shell (bash) bash는기본적인리눅스셀이며 root 셀 리눅스의 bash는 Unix의 Bourne Shell 문법을모두만족하며그외에더나은 CSh Shell 의일부분도포함 bash 시작스크립트.profile( 또는 bash_profile) 로그인셀로로그인시사용자인증후실행.bashrc 셀을실행하고명령의경로등지정.bashrc 비로그인셀로예를들어터미널을오픈하는경우처럼인증이없이실행 /etc/bash.bashrc 셀을포함 ( 또는복사 ) 프롬트등의사용자기본환경설정 순천향대학교컴퓨터학부이상정 87 bash 시작스크립트예 (1) 사용자계정으로로그인 $ pwd /home/lee $ ls $ ls -al 합계 152 drwx------ 11 sjlee sjlee 4096 3월 8 17:25. drwxr-xr-x 5 root root 4096 3월 5 11:20.. -rw------- 1 sjlee sjlee 0 3월 8 15:17.ICEauthority -rw------- 1 sjlee sjlee 0 3월 8 15:17.Xauthority drwxr-x--- x 2 sjlee sjlee 4096 3 월 8 15:11.ami -rw------- 1 sjlee sjlee 708 3월 9 09:37.bash_history -rw-r--r-- 1 sjlee sjlee 24 2월 11 2003.bash_logout -rw-r--r-- 1 sjlee sjlee 201 3월 8 17:24.bash_profile -rw-r--r-- 1 sjlee sjlee 124 2월 11 2003.bashrc $ ls.. lee lost+found kim 순천향대학교컴퓨터학부이상정 88
bash 시작스크립트예 (2) $ echo $SHELL /bin/bash $ cat.bash_profile #.bash_profile #G Get tthe aliases and dfunctions if [ -f ~/.bashrc ]; then. ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/usr/sbin export PATH unset tusername $ cat.bashrc #.bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then. /etc/bashrc fi 순천향대학교컴퓨터학부이상정 89 bash 시작스크립트예 (3) $ more /etc/bashrc # /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile # by default, we want this to get set. #E Even for non-interactive, it ti non-login shells. if [ "`id -gn`" = "`id -un`" -a `id -u` -gt 99 ]; then umask 002 else umask 022 fi 순천향대학교컴퓨터학부이상정 90
/etc/passwd 파일 /etc/passwd 파일은사용자의계정등록정보를저장하는 파일 사용자의로그인이름 암호화된패스워드 UID ( 사용자 ID) GID ( 그룹 ID) 사용자이름이나코멘트 홈디렉토리 로그인셀경로명 한줄에한사용자의정보가모두들어있음 각항목은콜론 (:) 으로구분 sshah:boqavhhackaxg:100:102:steve Shah:/home/sshah:/bin/bash 순천향대학교컴퓨터학부이상정 91 /etc/passwd 파일예 $cat/etc/passwd root:agq/ijgasew1m:0:0:root:/root:/bin/bash bin:*:1:1:bin:/bin: daemon:*:2:2:daemon:/sbin: adm:*:3:4:adm:/var/adm: lp:*:4:7:lp:/var/spool/lpd: sync:*:5:0:sync:/sbin:/bin/sync shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown halt:*:7:0:halt:/sbin:/sbin/halt / / mail:*:8:12:mail:/var/spool/mail: news:*:9:13:news:/var/spool/news: uucp:*:10:14:uucp:/var/spool/uucp: operator:*:11:0:operator:/root: games:*:12:100:games:/usr/games: 100 / gopher:*:13:30:gopher:/usr/lib/gopher-data: ftp:*:14:50:ftp User:/home/ftp: pop:*:15:15:apop Admin:/tmp:/bin/tcsh nobody:*:99:99:nobody:/: :99:99:Nobody:/: sshah:kss9ere9b1ejs:500:500:steve Shah:/home/sshah:/bin/tcsh hdc:bfcablvzbibfm:501:501:h. D. Core:/home/hdc:/bin/bash jyom:*:502:502:mr. Yom:/home/jyom:/bin/bash 순천향대학교컴퓨터학부이상정 92
기타계정등록관련파일 /etc/shadow / 파일 패스워드엔트리를 /etc/passwd 파일에서분리하여 /etc/shadow 파일에관리 /etc/passwd 파일은모든사용자들이읽을수있으나 /etc/shadow 파일은 root 권한이있는프로그램만읽을수있음 /etc/group 파일 각사용자는적어도하나의그룹에속해있어야함 사용자그룹에관한정보저장 순천향대학교컴퓨터학부이상정 93 사용자계정추가명령 adduser adduser username 순천향대학교컴퓨터학부이상정 94
사용자계정관련명령 예 로그인이름이 embed인새로운사용자를추가 # adduser embed deluser 기존사용자들을삭제하기위한명령 deluser username 순천향대학교컴퓨터학부이상정 95 shutdown (1) /sbin/shutdown 여러가지필요 ( 시스템업그레이드및패치등 ) 에의해서시스템을종료시켜야하는경우에사용 관리자가시스템을종료할때의작업순서와 shutdown 을했을때커널에서내부적으로이루어지는작업은다음과같다. 1. 접속해있는사용자들에게시스템이종료된다는메시지를전송 2. 새로운사용자의로그인을금지 3. 지정된시간내에종료되지않은프로세스를강제종료 4. 지정된시간내에로그아웃하지않은사용자를강제종료 5. 메모리남아있는데이터를디스크에저장 ( 디스크동기화 ) 6. 시스템에종료에관련된정보를시스템로그파일에기록 7. 마운트되어있는디바이스들의마운트를해제 8. 시스템을종료 순천향대학교컴퓨터학부이상정 96
shutdown (2) /sbin/shutdown [-t sec][-rkhncff] time [warning-message] -k : 실제로종료하지않고모든사용자에게경고메시지만을전송 -r : 시스템종료후에재부팅 (reboot) -h : shutdown 후에시스템을종료 (halt) -f : 재부팅할때 fsck(file system check) 를하지않음 -c : shutdown명령어를취소 time : 몇분후에시스템을종료할것인가를지정 warning-message : 사용자에게보내질종료메시지 예 접속한사용자에게경고메시지를보내고 5분후에시스템을종료 # shutdown -h -t 5 System down for regular maintenance 시스템을즉시종료 # shutdown -h now 시스템을즉시재부팅 # shutdown -r now 순천향대학교컴퓨터학부이상정 97 기타시스템종료명령 halt, reboot, poweroff 시스템을종료하는명령으로 reboot과 poweroff가 halt 명령에링크 되어있음 형식 /sbin/halt [-n] [-w] [-d] [-f] [-i] [-p] [-h] /sbin/reboot [-n] [-w] [-d] [-f] [-i] /sbin/poweroff [-n] [-w] [-d] [-f] [-i] [-h] n : 재부팅이나종료전에 sync를수행하지않음 현재메모리의내용등을디스크에저장하지않음 w: 재부팅이나종료하지않고 /var/log/wtmp/l / 파일에종료기록만저장 d : wtmp 파일에기록을저장하지않음. -n 옵션은 -d 옵션을동반 f : 강제로 halt 나 reboot 수행. shutdown 을호출하지않음 i : 모든네트워크인터페이스종료 h : 종료전에하드디스크를준비모드로설정 p : 종료시전원을끔. 이는디폴트로세팅 순천향대학교컴퓨터학부이상정 98
과제 보충자료등을참조하여다음과제를수행 앞에서소개되지않은리눅스명령 5개를조사하고, 이를사용한의미있는예를제시하여라. APT 패키지를사용하여의미있는패키지 1 개를설치하고사용예를제시하여라. 순천향대학교컴퓨터공학과이상정 99