Download presentation
Presentation is loading. Please wait.
Published byAlexander Darrell Osborne Modified 5년 전
1
Computer Communications LAB., Kawangwoon University
Linux & Unix June-Hyun, Moon Computer Communications LAB., Kawangwoon University
2
리눅스배포판과 윈도우 2000의 기술적 요약
3
리눅스 배포판 리눅스 리눅스 운영체제에 대하여 패키지들을 한데 모아 놓은 것.
예) 레드햇(Red Hat), 칼데라(Caldera), 수세(SuSE), 데비안(Debian) 리눅스 사용에 필요한 모든 것 리눅스 운영체제의 핵심, 즉 커널 서버 운영에 있어서 주가 되는 프로그램 응용 프로그램의 시작과 종료, 기억장치의 요청, 디스크의 접근, 네트워크 연결을 처리 모든 배포판은 같은 커널을 사용(버전은 다를지 모르지만) 따라서 모든 리눅스 배포판의 기본 작동은 동일
4
프리 소프트웨어와 GNU 라이센스(1) Free S/W 소스 코드 제공 아이디어
1980년대 초반 리차드 스톨만(Richard Stallman)에 의해 시작된 움직임 “모든 소프트웨어는 자유(free)로워야 한다.” 자유로운 사용을 의미 소스 코드에도 해당 소스 코드 제공 아이디어 소프트웨어의 사용자는 자신이 필요로 하는 기능을 개발자가 지원할 지 또는 지원하지 않을 지에 대해 개발자에게 의지할 필요가 없다. 사용자는 버그가 수정되기를 기다릴 필요도 없다. 장점: 새로운 기능이 필요하면 그 프로그램에 자신이 필요로 하는 기능을 추가할 수 있고, 그 소스를 이용하여 다른 사람들도 함께 그 이익을 누릴 수 있게 된다. 대표적 프로젝트: GNU(GNU’s Not UNIX) 프로젝트
5
프리 소프트웨어와 GNU 라이센스(2) GNU 공용 라이센스란? - GPL (General Public License)
출시되는 소프트웨어는 무료이며 아무도 이 자유를 빼앗을 수 없다고 명시 소프트웨어를 이익을 위해서 다시 파는 것은 허용된다. 판매자는 변경한 사항을 모두 포함해서 소스 코드를 전부 공개해야 한다. 재판매된 패키지도 역시 GPL의 적용을 받기 때문에 이것도 무료로 배포될 수 있을 뿐만 아니라 이익을 위해서 다시 팔릴 수도 있다. 더 중요한 GNU의 특징은 법률적 책임의 문제에서 찾을 수 있다. 프로그래머들은 자신의 소프트웨어로 인해 발생하는 어떤 위험이나 손해에도 책임을 지지 않는다. 기타 라이센스 BSD와 아파치(Apache) 같은 다른 라이센스 소프트웨어의 코드를 변경하고 변경한 코드를 공개하지 않고 배포할 수 있다. GPL은 추가된 코드를 반드시 밝혀야 한다. 참고.
6
프리 소프트웨어와 GNU 라이센스(3) 프리 소프트웨어의 장점 상업성의 관점에서 본다면 GPL은 멍청한 생각?
프리웨어 패키지 성공의 이유 코드 상 에러를 쉽게 발견, 신속 수정. GPL 시스템 하에서는 소송에 대한 걱정 없이 코드를 공개 소프트웨어의 마케팅이나 판매, 포장, 수송, 문서화 등의 업무에 들어가는 비용이 거의 들지 않는다. 왜 프로그래머들이 자신의 작업을 무료로 공개하려 하는가? 비슷한 문제를 가진 다른 이들과 이 코드가 공유된다면? 조악한 코드가 아주 유용한 도구로 둔갑할 수 있다. 다른 프로그래머들이 자신이 필요한 기능을 추가하기 시작 프로젝트는 많은 사람들의 노력의 결과로 결국 완전한 작품이 됨. 세련된 프로그램은 여기저기서 조금씩 기능을 추가시킨 수많은 프로그래머들의 공헌으로 탄생. 사실 완성작에서 정작 원래 프로그래머의 흔적은 거의 없어짐.
7
프리 소프트웨어와 GNU 라이센스(4) 리눅스의 경우
Linus Tovalds가 91년에 리눅스를 공개할 때 GPL을 통해서 공개 그 결과 리눅스는 수많은 공헌자와 분석가를 가지게 되었고, 이들의 참여로 매우 강력하고 풍부한 기능을 갖추게 되었다. Tovalds는 v 커널 이후 총 코드 중에 자신이 공헌한 것은 단지 5% 정도라고 추산하고 있다. 누구나 리눅스 커널과 다른 지원 프로그램을 사용할 수 있고 그것들을 다시 패키지화 하거나 판매할 수도 있기 때문에 리눅스로 돈을 번 사람도 있었다. 누구나 자신의 패키지와 더불어 커널의 모든 소스 코드를 공개하는 한, 그리고 그 패키지들이 GPL의 보호를 받는 한 모든 것은 합법적이다. 이것은 GPL 하에서 공개된 패키지들 역시 상업적 이익을 위해 다른 이들에 의해 다른 이름으로 판매될 수도 있다는 것을 의미한다. 부가 기능(value-added features)과 지원 채널(support channels)이 얼마나 다양한가? 문서화(documentation)가 얼마나 잘 되어 있는가?
8
윈도우 2000과 리눅스의 주요 차이점(1) 단일 사용자, 다중 사용자, 네트워크 사용자 윈도 2000 리눅스
하나의 컴퓨터, 하나의 데스크, 하나의 사용자 (one computer, one desk, one user) 단일 사용자(single-user) 운영체제 Client/Server 구조에서의 서버 역할: 네트워크 사용자만이 허용됨 리눅스 유닉스 철학 다수의 사용자가 동시에 중앙 컴퓨터에 로그인 각 사용자는 마치 각자의 시스템을 가지고 일을 하는 것처럼 느낄 수 있다. 다중 사용자(multi-user) 운영체제 진정한 의미에서의 서버 네트워크 사용자 및 원격 사용자도 모두 허용
9
윈도우 2000과 리눅스의 주요 차이점(2) GUI와 커널의 분리 윈도 2000의 GUI
그래픽 사용자 인터페이스를 핵심 운영체제와 결합. 시스템 외형이 일관성을 가지는 장점 리눅스(그리고 대부분의 유닉스)의 GUI 사용자 인터페이스와 운영체제를 분리. X 윈도우 시스템 인터페이스는 사용자 수준의 응용프로그램 안정적: GUI가 실패하더라도 리눅스가 같이 중단되지 않는다. X 윈도우는 단지 기본 개체가 스크린 위에서 어떻게 그려지고 다루어지는가를 규정 X 윈도우의 가장 중요한 특징 네트워크에 물려 있는 다른 워크스테이션의 스크린에까지 창(windows)을 보여줄 수 있다는 것이다. 두 사람이 하나의 컴퓨터에 로그인하고 마이크로소프트 Word와 비슷한 리눅스 프로그램(ApplixWare, WordPerfect, StarOffice 등)을 동시에 사용할 수 있게 해준다. 윈도우 관리자: GNOME, KDE
10
윈도우 2000과 리눅스의 주요 차이점(3) 이웃 네트워크(The Network Neighborhood)
윈도 2000의 디스크 공유 기법 디렉터리나 드라이브에 공유(share)를 설정 클라이언트와 서버 간의 구분이 깔끔하다는 장점 문제점: 어떤 서버가 어떤 데이터를 가지고 있는지를 사용자가 알아야만 한다는 것. 마운팅(mounting) 기능 새로 도입 공유 드라이브를 마운트함으로써 공유 드라이브를 마치 사용자의 로컬 디스크에 위치한 다른 디렉터리인 것처럼 보이게 한다. 윈도우 2000 하에서의 단점은 마운트를 하기 위해서는 그때마다 다시 부팅해야 한다는 것.
11
윈도우 2000과 리눅스의 주요 차이점(4) 리눅스에서의 디스크 공유 기법 인쇄 작업 역시 많은 부분에 있어서 비슷하다.
네트워크 파일 시스템(Network File System, NFS) 마운팅 개념 리눅스에서의 마운팅은 재부팅을 하지 않아도 된다. 리눅스 NFS의 경우 사용자는 서버 이름이나 디렉터리 경로를 알 필요가 없다. 삼바 서비스: 윈도2000 리눅스 상호 연동 인쇄 작업 역시 많은 부분에 있어서 비슷하다. 두 운영체제 모두 원격 프린팅을 지원
12
윈도우 2000과 리눅스의 주요 차이점(5) 레지스트리(Registry)와 텍스트 파일 레지스트리 리눅스에서의 설정 파일
윈도 2000에서의 설정 데이터베이스 레지스트리는 이론상으로는 좋은 발상이지만 다루기가 매우 까다롭다. 레지스트리와의 전쟁에서 이긴 관리자는 거의 없다. 리눅스에서의 설정 파일 설정 파일들이 일련의 텍스트 파일들로 되어있다. regedit 같은 도구를 사용하는 대신에 텍스트 편집기를 이용해 설정 파일들을 편집할 수 있다 설정 파일 자체에 주석문을 달 수 있어 수개월 후에도 무엇을 설정했었는지 기억할 수 있게 된다. 리눅스의 대부분 도구들은 설정 파일이 /etc 디렉터리나 그 서브 디렉터리에 존재한다. 단점: 설정 파일들을 작성하는데 표준 방법이 없다 장점 설정 파일을 사용하는 스크립트의 작성이 쉽다. 많은 서버가 있는 큰 사이트에서 자동화된 서버 관리 운영 시에 특히 도움이 된다.
13
윈도우 2000과 리눅스의 주요 차이점(6) 도메인(Domain) 윈도 NT/2000 리눅스의 네트워크 보안 모델의 기반
주 도메인 컨트롤러(Primary Domain Controller, PDC) 모델 리눅스의 네트워크 보안 모델의 기반 NIS(Network Information Service) 텍스트 파일에 기반을 둔 간단한 데이터베이스. 클라이언트 워크스테이션들에 의해 공유 PDC 같은 완벽한 전용 시스템을 필요로 하지는 않는다. NIS와 NT 도메인 간의 주요한 차이점 NIS 서버는 PDC가 하듯이 자신이 인증을 수행하지 않는다 각 호스트는 서버에서 로그인과 패스워드 정보를 구하고 사용자가 입력한 정보와 비교. 사용자를 적절하게 인증하는 것은 개별 응용프로그램의 책임 NIS는 범용 데이터베이스 네트워크에서 공유가 필요한 정보를 저장할 수 있음 NIS의 단점 각각의 NIS 맵(map)은 오직 하나의 키 밖에는 가질 수 없다 엔트리가 약 2만개 이상인 규모에는 적합하지 않다
14
윈도우 2000과 리눅스의 주요 차이점(7) 액티브 디렉터리(Active Directory)
윈도2000의 AD는 리눅스의 NIS와는 차원이 다른 서비스 임. 다른 부서들에 있는 기계들을 동일한 관리 제어 하에 묶어 두기 위해 고안된 것 마이크로소프트사가 기존에 사용하던 네임 방식의 문제점을 수정하여 DNS를 기반으로 하는 인터넷 중심 네이밍 기법으로 나아가기 위해 고안된 것 그 결과는 안 좋았고 숙달하는데도 많은 시간이 요구되었다. AD에 필적할 만한 리눅스의 서비스 LDAP(Lightweight Directory Access Protocol) NIS를 LDAP 서버와 연결하는 작업이 활발하게 진행 LDAP의 흥미로운 점은 Win2K에서 액티브 디렉터리가 사용하는 것과 유사한 기반 기술을 사용한다는 것 이론상으로 보면 유닉스와 윈도우 시스템 간에 LDAP 데이터베이스를 공유할 수 있다.
15
참고문헌 Computer: A History of the Information Machine, by Martin Campbell-Kelly and William Aspray. (Harper Collins, 1997) A Quarter Century of Unix, by Peter Salus. (Addison-Wesley, 1994)
16
서버형태로 리눅스 설치하기
17
설치 미디어 및 리눅스 설치 시 주의사항 설치 미디어 서버용 리눅스 설치 시 주의 사항 CD-ROM Network
MS-DOS 파일 시스템 서버용 리눅스 설치 시 주의 사항 현실에서 대부분의 서버는 하나 혹은 두 개의 일에 전념하기 마련 나머지 서비스들은 메모리를 차지하고 성능을 떨어뜨리기만 하는 찬밥 신세 서버와 클라이언트 워크스테이션의 차이를 이해 서버가 전용 기능을 수행하도록 설정
18
알맞은 배보판 찾기 배포판 구하는 방법 인기있는 배포판 컴퓨터 매장에서 구입 인터넷에서 다운로드하여 CD에 복사
여러 배포판을 미러링하고 있음 인기있는 배포판 레드햇 ( 맨드레이크 ( 데비안 ( 수세 ( 슬랙웨어 ( 옐로 도그 (
19
설치전에(1) 설치 전 점검 사항 하드웨어 시스템이 수행될 하드웨어 필요한 서비스를 제공하기 위한 서버의 이상적인 설정
호환 하드웨어 목록(Hardware Compatibility List, HCL) 예) 최신 하드웨어와 소프트웨어 설정은 피하는 것이 좋다. 서버에 최신의 비디오 카드 같은 멋진 장난감을 설치할 필요가 없기 때문이다.
20
설치 전에(2) 서버 설계 서버 설계 시 고려 사항 하드웨어 추가 구입 vs. 튜닝(tuning) 서버 설계 포인트 서버 환경
안정성 / 유용성 / 성능 하드웨어 추가 구입 vs. 튜닝(tuning) 서버 설계 포인트 기술이 아니라 관리적 측면 임시 사용자에게 친숙하지 않은 서버를 만들어야 함 멋진 멀티미디어 도구 등을 설치해서는 안 된다 서버를 임시 데스크탑으로 사용하는 것을 금지 서버 환경 서버의 물리적 안전 자물쇠와 열쇠가 갖춰진 server room 관리자가 아닌 사람은 네트워크를 통해서만 접근할 수 있도록 server room: 통풍이 잘 되고 시원하게 유지 백업 전원 설치
21
설치 전에(3) 서버 환경 개선을 위한 몇 가지 일들 Uptime 서버 콘솔 상에서 X 윈도우를 실행하지 않는 것이 좋다.
서버가 수행할 기능을 결정한 후 나머지 기능들은 모두 제거 필요한 커널 모듈들만을 적재 커널 컴파일의 필요성을 최소화. Uptime Uptime is good. More uptime is better. 서버는 오랫동안 죽지 않고 살아 있을수록 그 가치가 더해지는 것이다. uptime 명령어: 마지막 부팅 이후의 시스템 작동 시간, 현재 접속해 있는 사용자의 수, 그리고 시스템 부하 정도 등에 대한 정보를 제공한다. 가장 중요한 수치는 서버가 마지막 부팅 이후 작동한 시간 작동시간이 긴 것은 서버가 적절한 관리를 받고 있다는 표시
22
설치 전에(4) 이중 부팅(Dual-Booting)에 대하여 설치 방법들
여러 운영체제가 동시에 설치되어 있는 시스템에서 부팅할 운영체제를 선택하기 위한 도구 윈도 운영체제에서 파티션 재조정 방법 풀 백업 후 다시 파티션 설정(권장) 윈도 95/98 운영체제에서 fips.exe 프로그램을 이용하여 파티션을 재조정하는 방법 상업용 도구를 사용하는 방법: 예) 파티션 매직(Partition Magic) 설치 방법들 CD-ROM 설치 / 네트워크 설치 서버 설치 자동화하기 적당치 않음. 각 서버는 각자 고유의 수행 업무를 가지기 마련이고, 따라서 조금씩 다른 설정이 필요하기 때문
23
설치 전에(5) 제대로 설치가 안 된다면 모두 잘 따라서 했지만 설치에 실패했다면 도움 받는 법 추천 사이트
당황하지 말 것(Don’t panic) 도움 받는 법 정식 구입 배포판일 경우 해당 배포 회사에 기술 지원을 요청하거나, LinuxCare( 같은 별도 회사에 연락 인터넷 활용: 팁(tip)과 요령(trick) 예: 추천 사이트 comp.os.linux.admin
24
레드햇 리눅스 설치하기(1) 레드햇 리눅스 설치하기 부트 디스크 만들기
독립 실행형(stand-alone) 시스템에 레드햇 리눅스 7.2을 설치하는 과정을 설명 부팅 플로피 또는 CD-ROM으로 부팅 플로피 부팅 시에는 설치 단계의 일부 순서가 달라질 수 있다. 그래픽 설치자를 사용하고 싶지 않다면 boot: 프롬프트에서 text라고 입력 부트 디스크 만들기 윈도 또는 MS-DOS가 필요 배포판 CD-ROM의 dosutils 디렉터리에 있는 rawrite.exe 프로그램을 사용 소스 파일과 대상 플로피를 지정한다. 소스 파일에는 같은 CD-ROM 드라이브에 있는 /images/boot.img를 지정.
25
키보드 종류 선택하기 dead keys : 동시에 여러 개의 키를 눌러서 Ñ 와 Ô 같은 특수 문자를 만들 수 있다.
키보드 타입: Generic으로 시작하는 것 중의 하나를 선택 /usr/sbin/kbdconfig : 키보드 레이아웃/종류 변경 도구.
26
마우스 선택하기 직렬 마우스(serial mouse) 선택 시: 포트 번호도 선택해야 Emulate 3 Buttons
두 버튼 마우스로 세 버튼 마우스를 흉내내기 위한 기능 두 버튼 마우스에서 양 버튼을 동시에 누르면 세 버튼 마우스의 가운데 버튼을 누르는 효과. /usr/sbin/mouseconfig: 마우스 설정 도구
27
레드햇 리눅스 들어가기 업그레이드인가 설치인가? 새로 설치(install) 업그레이드 서버 모드 워크스테이션 모드
커스컴 모드: 각 패키지의 설치 여부와 설정 방법을 세밀하게 조정할 수 있다.(권장 모드) 노트북 모드 업그레이드
28
리눅스를 위한 파티션 만들기 /usr : 모든 프로그램 파일들이 위치하는 곳 /home : 모든 사용자들의 홈 디렉터리
/var : 로그 파일들이 위치하는 곳 /tmp : 임시 파일들이 위치 Swap : 가상 메모리(virtual memory) 파일이 저장되는 스왑 장치 윈도 NT/2000의 페이징 파일과 유사한 장소.
29
디스크 분할 방법 자동 디스크 분할 disk druid(권장) fdisk Mount point : 파티션이 마운트되는 장소
Device : 파티션 연관될 독립된 장치(device) 이름. IDE 디스크: /dev/hdXY, 예) /dev/hda1, /dev/hdb2 SCSI 디스크: /dev/sdXY, 예) /dev/sdb4
30
디스크 파티션 만들기(2) Requested : 파티션을 정의할 때 요청한 크기.
Actual : 파티션에 실제로 할당된 크기. Type : 파티션의 유형. 리눅스의 기본 유형은 Linux native. 드라이브 summary 드라이브 이름 (앞의 /dev/ 는 생략되어 있다) Cylinders/Heads/Sectors형태의 디스크 구조 디스크의 총 크기, 이미 할당된 디스크의 양 앞으로 분할될 수 있는 디스크의 양 Add : 새로운 파티션 만들기 Edit : 선택된(highlighted) 파티션의 인자 변경하기 Delete : 선택된 파티션 삭제하기 Reset : 변경 사항을 원래대로 되돌리기 Make RAID Device : 이 버튼은 시스템에 크기와 설정이 동일한 여러 디스크가 장착되어 있을 때에만 인에이블된다. Next : 변경 사항을 완료하기 Back : Disk Druid에서 변경시켰던 사항을 모두 취소하고 프로그램을 종료하기
31
디스크 파티션 만들기(2) 파티션 추가하기 Add 버튼 사용 기타 파티션 다루기 작업
최소한 루트 파티션과 스왑 파티션은 존재해야 함. 스왑 파티션 크기: RAM 크기가 128MB보다 작다면 RAM의 두 배 크기, RAM의 크기가 128MB 이상이면 RAM과 같은 크기로 기타 파티션 다루기 작업 파티션 수정(Edit) 파티션 삭제(Delete)
32
파티션의 포맷팅 포맷팅의 의미: 파티션에 파일 시스템을 만드는 과정.
33
Boot Loader설치 리눅스 부트 관리자 LILO Grub
커널의 하드디스크상의 물리적인 위치를 알고 있어야 커널의 로드가 가능 커널을 재설치 시 ‘lilo’를 실행해 부트로더를 다시 심어 주어야 함 Grub 파일시스템과 커널 포맷을 이해할 수 있음 따라서 디스크상에서 커널의 물리적인 위치를 알 필요 없이 단지 파일명과 커널이 위치하고 있는 파티션만 알고 있으면 커널의 로드가 가능 파일명만 알면 되기 때문에 파일명이 바뀌지 않는 한 다시 실행해 줄 필요가 없음
34
LILO 설치 LILO : 리눅스 부트 관리자 두 가지 설치 방법 커널 파라미터 지정할 것이 있으면 여기서 지정해야 함.
MBR에 설치하는 방법 부트 파티션의 첫 번째 섹터에 설치하는 방법 커널 파라미터 지정할 것이 있으면 여기서 지정해야 함. 여러 운영체제가 설치되어 있는 경우 디폴트 부팅 운영체제를 선택하면 된다.
35
Grub 설치
36
네트워크 설정
37
방화벽 설정
38
지원언어 선택 Default 언어선택 한가지 이상의 언어선택 가능
39
시간대(time zone) 설정
40
계정(account) 만들기 루트 사용자 계정은 반드시 설정해야 함.
만일을 위해 일반 사용자 계정도 만들어 두는 것이 안전함.
41
인증(Authentication) 설정
MD5 암호화 기법: 패스워드 암호화를 위한 최신 암호화 해싱 기법 셰도우 패스워드: /etc/passwd 파일과 /etc/shadow 파일이 기능 분담 NIS(Network Information Service): 리눅스에서 네트워크 정보 서비스를 사용하여 인증을 할 것인지 여부. LDAP(Lightweight Directory Access Protocol): 많은 서버에 많은 사용자들이 접근하는 환경에서 NIS가 성능을 제어할 수 없는 경우에 유용 Kerberos SMB
42
패키지 그룹 선택 Select Individual Packages를 선택한 경우 각 패키지를 개별적으로 선택할 수 있음
43
패키지 의존성 패키지 의존성에 의한 선행 패키지 의무 설치
44
X 윈도우 설정(1)
45
X 윈도우 설정(2) Test This Configuration Customize X Configuration
46
X 윈도우 설정(3) Use Graphical Login Skip X Configuration
X 윈도우가 필요 없거나 혹은 X 윈도우를 나중에 설정하려고 할 때 기본 데스크탑(Default Desktop) 선택 GNOME KDE
47
패키지 설치 시작(1) 패키지 설치 시작
48
패키지 설치 시작(2) 부트 디스크 만들기 설치가 모두 끝나면 부트 디스크를 만들 수 있는 옵션이 나온다.
만일을 위해 부트 디스크를 만들어 두는 것이 좋다.
49
패키지 설치 시작(3) 설치 완료 다른 도움을 찾으려면 설치가 모두 끝났다.
시스템을 재부팅하려면 CD-ROM이나 플로피 디스크를 해당 드라이브에서 제거 다른 도움을 찾으려면 레드햇 7.3 매뉴얼:
50
리눅스 부팅 과정
51
커널 부트 이미지(vmlinux) 적재 커널 부트 이미지 /boot 디렉토리에 있는 vmlinux-2.2.5-15 파일
모든 하드웨어 대한 정보가 인식되는 단계 /var/log/dmesg 파일에 모든 하드웨어 정보가 저장됨 하드웨어-램 메모리 시리얼 포트 마우스 사운드 카드 하드 디스크 스카시 컨트롤러 이더넷 카드 dmesg 명령으로 확인 편집기를 이용해서 편집 가능
52
시스템 초기화 init 명령 커널 부트이미지가 적재된 후 프로세스 ID 1번을 가지는 있는 init 명령 실행
교재 361페이지 화면 참조 /etc/inittab file에 기록된 내용을 실행함 File system을 체크하고 mount 한다 각각의 런레벨에 따라서 /etc/rc.d/*의 디렉토리에 있는 스크립트를 각각 실행한다. 여러가지 프로세스가 기동된다.
53
/etc/inittab Part I Default runlevel #
# inittab This file describes how the INIT process should set up # the system in a certain run-level. # Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes # Default runlevel. The runlevels used by RHS are: # halt (Do NOT set initdefault to this) # Single user mode # Multiuser, without NFS (The same as 3, if you do not have networking) # Full multiuser mode # unused # X11 # reboot (Do NOT set initdefault to this) id:5:initdefault:
54
UNIX와 Linux 실행 레벨 비교 실행 레벨 (RunLevel) Run State Solaris 2.x Action
Linux Action s, S Single user mode PROM Monitor level Halt (Do Not set initdefault to this) 1 Single user mode : root & user mounted 2 Multi user mode : No Resources exported Without NFS and Networking 3 Machine Resource exported Full Multi user mode 4 Not Currently used 5 PROM Monitor level(Power off) X11 (X-Window Start mode) 6 Halt and reboot to default state Reboot (Do Not set initdefault to this)
55
/etc/inittab System initalization 각각의 런레벨에 따라서 실행될 rc스크립트 파일 위치 지정
모든 스크립은 /etc/rc.d/init.d 디렉토리에 있는 스크립트가 심볼릭 링크 되어있음 # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Things to run in every runlevel. ud::once:/sbin/update
56
/etc/rc.d/rc.sysinit 스왑(swap) 구동 호스트 이름 설정
HOSTNAME 변수에 hostname 명령을 사용해서 호스트명을 설정 /etc/sysconfig/network 파일의 HOSTNAME 항목 /etc/HOSTNAME 파일에 기록된 것과 동일함 # Start up swapping. action "Activating swap partitions" swapon -a # Set the hostname. action "Setting hostname ${HOSTNAME}" hostname ${HOSTNAME}
57
/etc/rc.d/rc.sysinit /etc/sysconfig/network 파일 확인
/etc/sysconfig 디렉토리에 network 파일이 있으면 network 파일에 있는 내용이 읽어짐 파일이 존재하지 않으면 network 구성없이 호스트이름이 localhost로 설정됨 # Read in config data. if [ -f /etc/sysconfig/network ]; then . /etc/sysconfig/network else NETWORKING=no HOSTNAME=localhost fi
58
/etc/rc.d/rc.sysinit 루트 파일 시스템과 리눅스 파일 시스템 점검 _RUN_QUOTACHECK=0
if [ ! -f /fastboot ]; then STRING="Checking root filesystem" echo $STRING initlog -c "fsck -T -a $fsckoptions /" rc=$? if [ "$rc" = "0" ]; then success "$STRING" echo elif [ "$rc" = "1" ]; then passed "$STRING" fi
59
/etc/rc.d/rc.sysinit 파일 시스템 점검 및 복구
# A return of 2 or higher means there were serious problems. if [ $rc -gt 1 ]; then failure "$STRING" echo echo "*** An error occurred during the file system check." echo "*** Dropping you to a shell; the system will reboot" echo "*** when you leave the shell." PS1="(Repair filesystem) \#"; export PS1 sulogin echo "Unmounting file systems" umount -a mount -n -o remount,ro / echo "Automatic reboot in progress." reboot -f elif [ "$rc" = "1" ]; then _RUN_QUOTACHECK=1 fi
60
/etc/rc.d/rc.sysinit ISA PNP 디바이스 설정 # check for arguments
if grep -i nopnp /proc/cmdline >/dev/null ; then PNP= else PNP=yes fi # set up pnp if [ -x /sbin/isapnp -a -f /etc/isapnp.conf ]; then if [ -n "$PNP" ]; then action "Setting up ISA PNP devices" /sbin/isapnp /etc/isapnp.conf action "Skipping ISA PNP configuration at users request" /bin/true
61
/etc/inittab 시스템 재 시작 키 UPS 전원 부족시에 자동으로 셧다운 하기 # Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
62
/etc/inittab 가상 콘솔 접속을 위한 mingetty 설정 X-window 실행 레벨
# Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 # xdm is now a separate service x:5:respawn:/etc/X11/prefdm -nodaemon
63
RPM 패키지 관리
64
RPM의 용도 RPM 파일 자동 설치 업그레이드 기능 시스템 검증 질의
RedHat Package Manager로서 RedHat 배포본에서 패키지를 관리할 수 있는 Tool 파일 자동 설치 컴파일 과정 없이 자동 설치 업그레이드 기능 기존의 파일 삭제 없이 바로 업그레이드 가능 시스템 검증 사용자의 실수로 인해 파일이 삭제된 경우 처음 설치한 패키지 상태와 파일 크기를 비교 해당 패키지 재설치 가능 질의 패키지의 세부 정보, 파일 탐색, 파일 목록 등 확인 가능
65
RPM 패키지 구조 RPM 패키지 구조 Kernel-2.2.5-15.i386.rpm RPM name
패키지가 제작된 순서. 15번째 패키지임을 의미함 패키지의 버전 패지지의 이름, 커널 패키지를 의미함 RPM name Architecture Release Version Package Kernel i386.rpm
66
RPM 명령 RPM 명령 사용법 RPM 명령 사용법 설치 방법 rpm –i 패키지명 업그레이드 방법 rpm –U 패키지명
제거 방법 rpm –e 패키지명 질의 방법 rpm –q 패키지명 점검 방법 rpm –V 또는 –y 패키지 목록 패키지 만드는 방법 rpm –b 패키지명
67
RPM 설치하기 패키지 설치 -i 옵션 -v 옵션 -h 옵션 RPM 패키지를 설치하는 옵션
패키지가 인스톨되는 메시지를 보여주는 옵션 -h 옵션 패키지가 인스톨되는 과정을 #문자로 보여주는 옵션 /root]# rpm –i kernel i386.rpm /root]# /root]# rpm –iv kernel i386.rpm Installing kernel i386.rpm /root]# rpm –ivh kernel i386.rpm kernel ###################################
68
RPM 설치하기 RPM 설치 에러 메시지 버전 충돌시 해결 방안 강제 설치 : -force 옵션 사용
기존 파일 삭제 후 설치 : --replacefiles /root]# rpm –ivh kernel i386.rpm Package kernel is already installed error: kernel i386.rpm cannot be installed /root]# rpm –ivh --force kernel i386.rpm kernel ################################### /root]# rpm –ivh --replacefiles kernel i386.rpm kernel ###################################
69
RPM 제거하기 패키지 삭제 -e 옵션 이용 RPM 제거시 에러 메시지 해결 방안 RPM 패키지를 제거하는 옵션
의존성 무시하고 제거 : --nodeps 옵션 사용 /root]# rpm –e mysql i686.rpm /root]# /root]# rpm –e mc removing these package would break dependencies: mc is needed by tkmc kr /root]# rpm –e --nodeps mc /root]#
70
RPM 업그레이드 패키지 업그레이드 -U 옵션 이용 RPM 업그레이드시 에러 해결 방안 RPM 패키지를 업그레이드하는 옵션
설정 파일이 있는 경우 .rpmsave파일로 이전 정보 저장 RPM 업그레이드시 에러 낮은 버전으로 업그레이드 할려고 할 경우 해결 방안 새 버전인 경우에만 업그레이드 가능 : -F(Freshen) 옵션 사용 무시하고 업그레이드 할 경우 : --oldpackage 옵션 사용 /root]# rpm –Uvh kernel i386.rpm /root]#
71
패키지 정보 알아보기 패키지 스펙 옵션 (Package Specification Options)
정보 선택 옵션(Information Selection Options) -a 설치되어 있는 모든 패키지의 정보 -f <file> <파일>을 포함하고 있는 패키지의 정보 -p <package> 지정한 패키지에 대해서 정보 파악 -i 패키지의 이름, 짧은 설명, 버전, 날짜 제작자 등 -I 패키지의 모든 파일의 목록을 보고자 할 때 -s 패키지의 모든 파일들의 상태를 보고자 할 때 -d 패키지 파일 목록 가운데 문서 파일만 보고자 할 때 -c 패키지 파일 목록 가운데 환경 설정 파일을 보고자 할 때
72
패키지 검증하기 패키지 검증하기 패키지 점검 상태 표시 문자 -V 옵션 이용 5 MD5 체크섬(파일 내용0 S 파일 크기 L
사용법 : rpm –V [옵션] 패키지명 패키지 점검 상태 표시 문자 5 MD5 체크섬(파일 내용0 S 파일 크기 L 심볼릭 링크 T 파일 최종 변경 시간 D 장치 U 사용자 G 그룹 M 파일 허가권 또는 파일 형식 모드
73
UNIX 소개
74
UNIX 소개 UNIX의 정의 UNIX의 특징 컴퓨터에서 프로그램을 실행시키고 자원을 관리하는 운영체제의 일종
주로 대형 서버나 Workstation 에서 사용됨 System V계열과 BSD계열이 있음 PC 에서 사용하는 Linux역시 UNIX 계열의 OS임 UNIX의 특징 Multi-user : 여러 사용자가 사용 가능하다. Multi-tasking : 사용자가 여러 프로그램을 동시 실행 가능하다. Multi-choice : 다양한 사용자 인터페이스 지원된다. 이식성(Portability)이 좋다. 컴퓨팅 환경의 확장이 용이하다.
75
UNIX 소개(cont.) UNIX의 역사 1960년 대말 AT&T의 Bell 연구소와 MIT 대학 공동으로 Multics 운영체제 개발 1969년 Bell 연구소 연구원 Thompson이 Ritchie의 도움으로 파일 유틸리티(cp, mv) 및 Shell 명령어 해석기 개발 Multics와 유사한 발음으로 UNIX(Brian이 제안)라 명명함 1971년 Ritchie가 B를 기초로 프로그램 언어인 C 개발 1973년까지 기존의 UNIX를 C로 재작성 1970년대 Bell 연구소에서 대학에 UNIX를 저가로 판매 이후 여러 연구소와 단체가 UNIX에 중요한 기능을 추가 HP사와 SUN, DEC 등의 회사가 UNIX 개발에 참여 현재 PC 부터 Super-Computer까지 널리 보급됨
76
UNIX의 기본
77
UNIX의 기본 - login login login 과정
Consol이나 Terminal을 이용해서 UNIX Server에 접속하는 과정 UNIX가 Multi-user환경이기 때문에 각각의 사용자들의 정보를 보호하기 위함 login 과정 telnet <자신이 접속하고자 하는 서버 이름> 예) telnet bravo login: <사용자 계정> 예) login : imp Password: <사용자 계정 비밀번호> 예) password : (활성화 되지 않음 )
78
UNIX의 기본 – login (cont.) UNIX OS 버전 login 프롬프트 Password 프롬프트 마지막 종료시간
Root 메시지 자신의 banner 메시지 초기 프롬프트 마지막 종료시간 접속 주소, 서버 환경
79
UNIX의 기본 - Shell Shell Shell의 종류 DOS의 command.com과 비슷한 역할
프로그램으로 명령을 입력 받아 이를 해석하고 처리해 주는 역할을 수행 UNIX는 Multi-choice 환경으로 사용자가 선택 가능함 Shell의 종류 C Shell – 현재 가장 많이 사용됨 Bourne Shell Korn Shell Bourne again Shell – Linux의 기본 Shell tcsh
80
UNIX의 기본 – Shell(cont.) 자신의 Shell 알아보기 사용자 환경 설정 파일(C Shell 인 경우)
ps –f sh : Bourne Shell csh : C Shell ksh : Korn Shell 사용자 환경 설정 파일(C Shell 인 경우) .cshrc : DOS의 config.sys(여러 가지 초기화 명령)와 비슷함 .login : terminal setup 관련 내용이 들어있음 .profile : User만의 독특한 설정 파일 .logout : logout 할 때 행하고자 동작 명시
81
UNIX의 기본 – 환경 설정 기본적 .cshrc file 내용 .cshrc
82
UNIX의 기본 - 환경 설정(cont.) 기본적 .login file과 .profile내용 .login .profile
83
UNIX의 기본 – 기본 명령어 passwd (change login passwd) exit, logout whoami
패스워드를 바꾸는 명령 영문, 숫자를 섞어서 6~8자 내외 첫번째로 숫자나 특수문자가 올 수 없음 exit, logout 접속을 종료할 때 사용 whoami 현재의 user name을 나타내 줌 who (who is logged in, what are they doing) Username, 접속 방법, login time, 접속 IP Address 등 id user id 와 user가 속한 group id를 알려줌
84
UNIX의 기본 – 기본 명령어(cont.) cal [month] [year] env pwd
자신의 설정된 환경 변수들을 보여줌 pwd 현재 자신의 directory 를 보여줌 cd (change working directory) % cd => user의 Home directory로 이동 % cd .. => 현재 directory의 상위 directory로 이동 % cd [directory 경로] => 정해진 directory로 이동 ls (list contents of directory) 현재의 directory 내용을 보여줌(DOS의 dir 명령과 같다) 예) % ls [-option] [filename]
85
UNIX의 기본 – 기본 명령어(cont.) option option의 중복 사용 가능
-a : 숨겨진 파일(‘.’으로 시작하는 파일)까지 보여줌 -l : file에 대한 자세한 내용을 보여줌 -rw-r-- r imp student 월 12일 12:24 pr 허가 상태 링크수 소유자 Group 크기 생성된 날짜 시간 -R : 하위 directory의 내용까지 보여줌 root directory에서는 사용하지 말 것. -s : file의 대략적인 크기를 보여줌 -t : 최근의 사용순서대로 정렬하여 보여줌 (최근에 사용한 file을 찾을 때) option의 중복 사용 가능 예) % ls –alr 숨겨진 file 까지 하위 directory의 내용까지 자세하게 보여줌
86
UNIX의 기본 – 기본 명령어(cont.) date (date) : 시스템의 날짜와 시간의 표시
형식 date [MMDDhhmm[YY]] date [+format] 기능 시스템의 현재 시간과 날짜를 표시한다. Superuser는 시간과 날짜를 변경시킬 수 있다. +format을 사용하여 date의 출력 형식을 명시할 수 있다. option a abbreviated weekday-sun to Sat h abbreviated month-Jan to Dec D date in mm/dd/yy format J Julian date ( ) r time in A.M/P.M notation T time in HH:MM:SS format
87
UNIX의 기본 – 기본 명령어(cont.) time (time) : 커맨드의 실행시간 표시 예) % date
Weds May 24 14:23:45 KST 1995 % date Weds May 24 15:36:00 KST 1995 % date “ +Date = %D Time = %T” Date = 05/26/95 Time = 13:12:07 time (time) : 커맨드의 실행시간 표시 형식 time command 기능 command를 실행하고 아래와 같은 실행 시간을 표시함 real 전체 실행시간의 Total user CPU의 활동 시간 sys 커널의 활동 시간 예) % time cc average .c 4.3 real user 1.4 sys
88
UNIX의 기본 – 기본 명령어(cont.) touch (change file access and modification times) file의 최종 수정시간을 변경시켜줌 예) % touch [filename] 만약 file name에 해당하는 file이 없는 경우 file 생성 du (disk usage) 현 directory의 하위 directory들이 사용하고 있는 디스크 용량을 보여줌 option -s : 사용 총량만을 알려줌 -a : 모든 file의 사용량을 알려줌 df (disk free) 디스크의 총량과 사용량 남은 량 들을 알려줌 -k option 사용 시 킬로바이트 단위로 보여줌
89
UNIX의 기본 – 기본 명령어(cont.) chmod (change mode) : 파일 액세스 모드의 변경
형식 chmod mode files(s) 기능 파일의 사용 허가권(모드)를 변경한다. option mode u g o a user group other all(ugo) add permission remove permission = reset permission permission set number none execute write read
90
UNIX의 기본 – 기본 명령어(cont.) access permission 예) chmod 644 test
r read w write x execute l set locking privilege s set user or group ID mode t set sticky bit(save text) mode u user’s current permission g group’s current permission o other’s current permission 예) chmod 644 test chmod 755 test chmod a+x test chmod o-w test
91
UNIX의 기본 – 기본 명령어(cont.) umask (user mask) : 파일 생성시 허가권 요청에 대한 마스크 설정
형식 umask mask 기능 파일을 생성할 때 사용자가 요청하는 허가권에 대하여 시스템이 제한을 가하는 make값을 설정한다. 인수를 정하지 않으면 파일 생성 허가권의 현재 값을 표시한다. option & mask 0 not to restrict any permission 1 to restrict execute permission 2 to restrict write permission 4 to restrict read permission 예) umask test umake test
92
UNIX의 기본 – 기본 명령어(cont.) chown (change file ownership)
예) % chown [소유자] [file name] chgrp (change file group ownership) File의 소유권을 다른 그룹으로 넘겨주는 명령 예) % chgrp [group] [filename or directory] cp (copy files) File을 복사하는 명령 예) % cp [복사할 file name] [복사될 경로] cp 명령은 Meta 문자(‘*’, ‘?’)를 사용 가능함 예) % cp test* ../
93
UNIX의 기본 – 기본 명령어(cont.) mv (move file) rm (remove)
File을 옮기는 명령, 사용법은 cp와 같음. Mv 명령으로 file명을 바꿀 수 있음 예) % mv test.file test.test rm (remove) File을 지우는 명령 예) % rm test* rm –r option은 아주 강력하고도 위험한 명령임. mkdir (make directory) 새로운 directory를 만드는 명령 rmdir (remove directory) Directory를 삭제하는 명령
94
UNIX의 기본 – 기본 명령어(cont.) chsh (change shell)
‘sh’는 bourn shell, ‘ksh’은 korn shell, ‘csh’ 은 C shell로 바꿈 file (determine file type) File의 종류가 무엇인지를 알려줍니다. 예) % file [filename] head (display first few lines of files) File의 처음 몇 개의 행을 보여주는 명령 예) % head [-n] [filename] -> ‘n’개의 line을 보여줌 tail (deliver the last part of a file) File의 끝부터 몇 개의 행을 보여주는 명령 예) % tail [-n] [filename]
95
UNIX의 기본 – 기본 명령어(cont.) cat (concatenate and display files)
별로 크기가 크지 않은 text file을 볼 때 사용 예) % cat test.file option % cat –s test.file : 공백라인을 삭제하고 보여줌 % cat –n test.file : 화면에 line number를 붙여줌
96
UNIX의 기본 – 기본 명령어(cont.) more (browse or page through a text file)
File의 내용을 볼 때 사용하는 명령. File의 내용을 한 화면씩 보여줌. 스페이스바를 누르면 다음 화면이 스크롤 됨. 예) % more [option] [filename] option -s : 공백 line을 제거하고 보여줌 +n : ‘n’ line부터 보여줌 +/문자열 : 그 문자열이 있는 곳부터 보여줌 q : 종료 v : 현재 line에서 vi 편집기를 시작함 = : 현재의 line number를 알려줌 Ctrl-B : 한 화면 전으로 스크롤 됨
97
UNIX의 기본 – 기본 명령어(cont.) pg (files perusal filter for CRTs)
more와 비슷한 기능을 제공. 이전 화면을 볼 수 있는 기능 Enter키를 누르면 다음 화면을 보여줌 예) % pg [option] [filename] option -s : 공벽 line 제거 +n : n번 line부터 보여줌 +/문자열 : 그 문자열이 있는 위치부터 보여줌 nl : n번 line을 보여줌 +nl : 현재부터 n행 후의 내용을 보여줌 -nl : n행 이전의 내용을 보여줌 /문자열 : 문자열 검색 // : 반복되는 패턴 검색 . : 현재 화면 재 출력 v : vi 편집기 실행
98
UNIX의 기본 – redirection & pipe
출력 방향을 변경시킴 pipe 한번에 여러가지 명령을 처리할수 있음 출력 방향 변경 (‘>’) 우선 file을 생성. ‘%’은 프롬프트임. % touch test : 빈 file 생성 % cat test : 아무것도 나타나지 않음 % ls –al > test : 화면상엔 변화가 없음 % cat test : ??
99
UNIX의 기본 – redirection & pipe(cont.)
출력 방향 변경 추가 (‘>>’) % ls –al >> test : 역시 화면 변화 없음 % cat test : test file에 내용 추가됨 % rm test* : test로 시작하는 모든 파일 지움 cat을 이용 edit하는 방법 % cat > test 이것은 test입니다. : 문자열 입력후 enter ^Ctrl-D % cat test : ?? cat을 이용한 문자열 추가 방법 % cat >> test 이번엔 추가입니다. : 문자열 입력후 enter % cat test : 내용이 추가됨
100
UNIX의 기본 – redirection & pipe(cont.)
입력 방향 변경 (‘<‘) wc(display a count of lines, words and characters in a file) File안의 line수와 단어 수 그리고 문자의 수를 세를 명령 option : -l : line 수 –w : 단어의수 –c : 문자의 수 % wc test % wc < test % cat test | wc : 모든 line, 단어, 문자의 수가 출력됨 Pipe : 파이프 Pipe는 명령의 출력을 다른 명령으로 연결할 때에 사용됨 % who > wc –l % ls –al % who | wc –l
101
UNIX의 기본 – redirection & pipe(cont.)
uniq (report or filter out repeated lines in a file) 중복된 line, 공백 들을 제거하고 출력하는 명령 option -d : 반복되는 line만 출력 -c : 중복된 횟수만 출력 -u : 반복되지 않은 line만 출력 % cat >> test Hello Enter ^Ctrl-D % cat test % uniq test
102
UNIX의 기본 – Meta Characters
Meta Charcters 다른 문자와는 다르게 독립적으로 다른 의미를 가지고 사용되는 문자 대표적 Meta Charcters * ? [ ] : Wild card charcters > >> < | : Redirection charcters & : Background job charcters $ : Shell 변수의 값을 이용할 때 % ls t* : ‘t’로 시작되는 모든 문자와 대체됨 % ls t? : ‘t’로 시작되는 두문자와 대체됨( ?가 하나의 문자 ) [a-r] : a에서 r까지의 문자와 대체됨 % game & : game을 백그라운드로 실행함 % echo $path : 환경변수 path의 값을 보여줌
103
UNIX의 기본 – 추가 명령어 man (find and display reference manual pages)
각 명령어에 대한 online 도움말을 제공함 예) man [명령어] 이 명령은 자동으로 ‘more’명령을 수행한다. sort (sort, merge, or sequence check text file) 정보를 지정한 방식으로 정렬해 주는 명령 예) sort [filename] option -d : 사전식 정렬 -f : 대문자를 소문자로 간주 -n : 숫자로 정렬 -r : 역순 정렬 +m : m번째 필드로 정렬한다.
104
UNIX의 기본 – 추가 명령어(cont.) spell nl (line numbering filter)
% sort test % cat test % ls –al | sort –f : 알파벳순 정렬 % ls –s |sort –n : 크기순 정렬 ls –s | sort –n > list : list라는 정렬된 file 생성 spell 철자 검사를 하는 명령(대부분 소형 시스템에서는 사용 안함) nl (line numbering filter) line 번호를 붙여주는 명령 = cat –n 과 같은 기능 예) nl [filename] % nl test %cat –n test : 두 명령이 같은 결과를 냄
105
UNIX의 기본 – 추가 명령어(cont.) option % ls –al | nl -ba : 공백에도 번호를 붙임
-bp문자 : 문자가 있는 line만 번호를 붙임 -s문자 : 번호와 line을 지정한 문자로 분리해 줌 % ls –al > test % echo ” ” >> test % ls –al >> test % nl test % nl –ba test % nl –bptest test % nl test –s번째
106
UNIX의 기본 – 추가 명령어(cont.) banner (make posters)
입력한 문자를 banner style로 찍어준다. 예) % banner Good-morning! bc (arbitrary precision arithmetic laguage) UNIX에서 제공하는 간단한 계산기(4칙 연산) 예) % bc % bc <enter> 45 : 정답 종료는 ^Ctrl-D 입력
107
UNIX의 기본 – 압축 명령어 tar (crete tape archives, and add or extract files)
% tar cvf [만들 filename.tar] [압축하고자 하는 대상] File을 풀 때 % tar xvf [풀고자 하는 filename] [풀어놀 ditectory] File을 풀지 않고 내용만 보고자 할 때 % tar tvf [보고자 하는 filename]
108
UNIX의 기본 – 압축 명령어(cont.) compress uncompress File 압축 명령
예) % compress [filename] : filename.Z가 생성됨 % compress temp.tar : temp.tar.Z라는 file이 생성됨 option -v : 압축률을 보여줌 예) % compress –v temp.tar uncompress File 압축 해제 명령 예) uncompress [압축된 filename] : 원래의 file이 됨.
109
UNIX의 기본 – 압축 명령어(cont.) gzip File 압축 명령
예) % gzip [filename] : filename.gz가 생성됨 % compress temp.tar : temp.tar.gz라는 file이 생성됨 option -v : 압축률을 보여줌 예) % gzip –v temp.tar -d : File 압축해제 명령 예) gzip -d [압축된 filename] : 원래의 file이 됨.
110
UNIX의 기본 – 정보 검색 명령 grep (search a file for a pattern)
예) % grep [flag] [pattern] [filename] option -c : 일치되는 라인의 수만을 출력 -i : 패턴에서 대소문자 구별 무시 -l : 패턴에 일치하는 file의 filename만 출력 -n : line 번호 포함 검색의 예 % grep imp /etc/passwd : /etc/passwd file에서 imp라는 문자를 검색 % grep csh /etc/passwd | wc –l /etc/passwd file에서 C Shell을 쓰는 사용자수 검색
111
UNIX의 기본 – 정보 검색 명령(cont.)
echo (echo argument) 입력된 명령을 반향(반복)한다. 예) % echo [문자열] % echo * : ls와 같은 기능을 함. ‘*’는 임의의 문자를 의미 % echo ? : ls ? 와 같음 ‘?’는 한 문자를 의미 % echo t* : t로 시작하는 모든 문자열
112
UNIX의 기본 – 정보 검색 명령(cont.)
<< (hear current) <<는 >>와 같은 흐름 재지정 명령(Redirection)이다. <<는 입력을 모사(simulate)하는데 쓰인다. 사용 예 % cat –n << endtest > myenv : text의 마지막에 endtext를 입력 my Home Directory is $home my Path is $path current Directory is $cwd endtext % cat myenv
113
UNIX의 기본 – 정보 검색 명령(cont.)
sed (stream editor) sed는 파이프라인의 정보의 흐름을 편집하는 명령이다. 예) sed ‘s/피대체어/대체어/플래그’ 대표적인 플래그는 g : line의 모든 패턴을 대체함. ‘g’를 쓰지 않으면 한 line에서 하나만을 대체한다. ‘;’ : 여러 sed명령을 함께 실행할 수 있다. % who : 이 화면 출력과 다음의 화면 출력을 비교해 보시오. % who | sed ‘s/pts/Device/’ % more /etc/passwd % more /etc/passwd | sed ‘s/:/-/g
114
UNIX의 기본 – 정보 검색 명령(cont.)
awk (pattern scanning and processing language) 단어 중심으로 text를 분석하는 명령. UNIX에서 가장 강력한 filter중 하나 awk는 입력되는 정보를 필드로 나누어 받아들입니다. 필드는 ‘$n’으로 구분함 예) % awk ‘[command]’ : 가장 일반적 명령은 print임 % awk ‘[command]’ [filename] % who | awk ‘{print $1}’ % who | awk ‘{print “ user ” $1 “ is on terminal ” $2}’ Flag -f : 명령의 세부 사항을 file로부터 읽음 -F문자 : 입력되는 정보의 필드구분자로서 ‘문자’를 쓴다는 것임
115
UNIX의 기본 – 정보 검색 명령(cont.)
% awk –F : ‘{print $7}’/etc/passwd | sort | uniq –c : -c는 중복된 수 $0는 line전체를 가르킴 사용 가능한 특수문자 “\t” : tab “\n” : 개행 문자 예) % ls –lF | awk ‘{print $5 “\t” $9}’ awk 프로그램은 language처럼 변수의 사용이 가능함 % ls –l | awk ‘{total = total+$5; print total “\t” $9}’ % ls –l | awk ‘{total += $5; print total “\t” $9}’ Awk에서 사용되는 유용한 변수 NF : number of filed의 뜻으로 마지막 필드의 수를 알 수 있음 NR : ordinal number the current record의 뜻으로 행의 수와 같음
116
UNIX의 기본 – 정보 검색 명령(cont.)
% awk –F ‘{print $NF}’ /etc/passwd | sort | uniq –c % ls –l | awk ‘{print NR “:” $0}’ tee (replicate the standard output) 정보의 흐름을 복사하는 명령. 정보의 흐름을 둘로 쪼개는 것 option -a : file에 덮어쓰지 않고 첨가하라는 명령 % who | tee who.out : 화면에 who 의 출력도 나오고 who.out이란 file에 출력의 내용이 저장됨 와일드 카드 ‘[ ]’ 를 써서 문자의 영역 지정 가능 % ls –l a* b* c* d* % ls –l [abcd]* % ls –l [a-d]* % ls –l [d-f m .]* : d에서 f, m, 도는 ‘.’로 시작하는 file 검색
117
UNIX의 기본 – 정보 검색 명령(cont.)
whereis (location the binary, source, and manual page file for a command) 시스템 경로상의 어디에 위치하는가를 알려주는 명령 예) whereis [찾을 filename] % whereis mkdir mkdir: /usr/bin/mkdir /usr/man/man1/mkdir.1 /usr/man/man2/mkdir.2
118
UNIX의 기본 – 압축 명령어(cont.) find (find files) 찾고자 하는 file의 위치를 알려주는 명령
예) find [path] [-option] [pattern] option -atime [n] : file이 n일 전에 touch(접근)되었으면 ‘true’ -ctime [n] : file이 n일 전에 생성되었으면 ‘true’ -exec [command] : 명령을 실행 -mtime [n] : file이 n일 전에 수정되었으면 ‘true’ -name [pattern] : 패턴에 맞는 file명이면 ‘true’ -type [file 종류] : file이 종류가 맞으면 ‘true’ ‘d’ : directory, ‘f’ : file, ‘l’ : link -user [name] : file의 사용자가 name이면 ‘true’ 예) % find . –name “*.c” : 현재 디렉토리 밑에 .c로 끝나는 file 검색 % find /usr1 –user “imp” : file의 소유자가 imp인 모든 file 검색
119
UNIX의 기본 – 작업 제어 명령 Process UNIX에서 실행 중인 모든 프로그램
OS차원의 Process scheduling을 지원함 각 Process는 Process ID(PID)를 가지고 있고, 또 상태를 가지고 있음 UNIX의 Process는 계층적 구조를 가지고 있음 현재 사용되는 있는 Process는 Foreground라고 하고 잠시 중단되거나 뒤편으로 넘겨논 상태의 모드를 Background라고 함 예) % man fg : fg에 대한 매뉴얼 페이지를 보여주는 명령 ^Ctrl-Z : 작업 중단 % jobs : 현재의 백그라운드 작업 내용을 보여주는 명령 [1] +중단됨(사용자) man fg % fg : 다시 Foreground로 작업이 넘어옴
120
UNIX의 기본 – 작업 제어 명령(cont.)
^Ctrl-Z를 누름으로써 작업을 백그라운드로 전환할 수 있다. jobs명령으로 작업의 내용을 볼 수 있음 fg명령으로 다시 Foreground로 다시 작업을 전환할 수 있음 사용자의 입력을 요하거나 화면에 출력을 해야 하는 Process들은 Background에서는 실행이 중지됨 사용자의 입력이 필요 없는 경우나 잠시 실행을 중지시킬 때 Background로 Process를 실행시켜야 함 Background에서 중지되어 있는 명령 Background에서 실행시키려면 bg명령을 줌 프로그램을 Background로 바로 보낼 때는 명령의 끝에 ‘&’를 줌 예) % find / -name “*text*” > test.bg & : text라는 문자열이 들어간 모든 file을 찾아 test.bg에 넣는다.
121
UNIX의 기본 – 작업 제어 명령(cont.)
fg Background의 Process를 Foreground로 실행함 예) % fg %[작업ID] : 작업 ID는 jobs를 실행했을 때 제일 앞에 나오는 수 bg Background의 중지된 Process를 실행시킴 예) % bg %[작업ID] jobs Background의 작업들의 상태를 보여줌 ps (report process stastus) Process의 상태를 보여주는 명령 option -a : 현재의 터미널과 연관된 모든 Process를 보여줌
122
UNIX의 기본 – 작업 제어 명령(cont.)
-A : 현재 시스템의 모든 Process를 보여줌 -e : 현재 실행중인 모든 Process를 보여줌 -l : 자세한 Process의 정보를 보여줌 kill (terminate or signal processes) Process를 강제 종료시키는 명령 예) % kill [-signal] [PID] [&JOB ID] signal -l : signal의 목록 제공 -9 : 무조건 종료시키는 강력한 명령 예) % man ps & % ps % jobs % kill [PID] or [%JOBID]
123
UNIX의 활용
124
UNIX의 활용 - VI Editor VI Terminal 설정 Mode vi를 이용한 문서 작성
% vi 라고 입력했을 때 에러(error)가 나는 경우 csh(C Shell) : .login file에 setenv TERM vt100 sh(Bourne Shell) : .profile file에 TERM=vt100; export TERM Mode 명령 모드 : 명령을 입력할 수 있는 모드 입력 모드 : ‘I’를 입력하여 입력이 가능한 모드 vi를 이용한 문서 작성 % vi [작성할 file name]
125
UNIX의 활용 - VI Editor(cont.)
커서의 이동 문자 단위의 이동 대부분의 터미널에서는 화살표키로 이동 가능 만약 화살표카가 지원되지 않는 경우는 다음의 키를 이용 줄단위의 이동 n : 현재 행으로부터 n번째 행으로 이동 + : 다음 행의 처음으로 이동 - : 이전 행의 처음으로 이동 k j h ㅣ
126
UNIX의 활용 - VI Editor(cont.)
단어, 문장 절 단위이동 f 문자 : 다음에 나타나는 “문자”로 이동 F 문자 : 이전에 나타나는 “문자”로 이동 ( : 문장의 처음으로 이동 ) : 문장의 끝으로 이동 ; : 같은 방향으로 다음 “문자”로 이동 { : 커서가 인접한 패러그래프의 시작위치로 이동 } : 커서가 인접한 이전 패러그래프의 시작위치로 이동
127
UNIX의 활용 - VI Editor(cont.)
화면 단위 이동 ^B : 이전 화면으로 이동 ^F : 다음 화면으로 이동 ^U : 반화면 앞으로 이동 ^D : 반화면 뒤로 이동 z :커서의 위치를 화면의 Top으로 스크롤 z. : 커서의 위치를 화면의 중앙으로 스크롤 z- : 커서의 위치를 화면의 bottom으로 스크롤 ^L : 화면의 재 출력
128
UNIX의 활용 - VI Editor(cont.)
삽입과 지우기, 복구, 교체 삽입 i : 현재 커서의 위치부터 삽입 a : 현재 커서의 위치 다음부터 추가 시작 A : 현재 줄의 마지막에 추가 시작 I : 현재 줄의 처음에 추가 시작 o : 현재 라인의 아래에 새로운 라인을 열어준다. O : 현재 라인의 위에 새로운 라인을 열어준다. 지우기 x : 커서 위치의 한 문자를 지운다. X : 커서 이전의 한 문자를 지운다. dd : 현재의 행을 지운다. ndd : n개의 라인을 지운다. dG : 현재 행부터 file의 끝까지 지운다.
129
UNIX의 활용 - VI Editor(cont.)
d1G : 현재 행부터 file의 시작까지 지운다. dnG : 현재 행에서 n번째까지 지운다. 복구 p : 버퍼의 내용을 현재 줄 이전에 복구한다. P : 버퍼의 내용을 현재 줄 다음에 복구한다. VI -r [작업하던 file name] : 시스템이 갑자기 꺼졌을 때 복구 명령 교체 cw : 현재 위치에서 단어 교체 cfc : 현재 위치에서 'c' 문자까지 변경 ' . ' : VI에서 마지막 명령을 반복하라는 뜻이다.
130
UNIX의 활용 - VI Editor(cont.)
검색 치환 검색 /문자열 : 문자열을 앞으로 검색한다. ?문자열 : 문자열을 뒤로 검색한다. 치환 [범위]s/old/new/[cgi] : old를 new로 치환해 준다. [범위] : 숫자, $, .(현재 위치)등을 지정한다. [cgi] : c는 변경시 변경여부를 묻는 플래그 g는 한 줄의 모든 것을 변경하는 것이고 I 는 검색시 대소문자를 구분하지 않는다. 예) 10,$s/old/new/g : 10줄에서 파일의 끝까지 수행 g/foobar/s/bar/baz/g : 전체 file에서 “foobar”를 찾아서 “foobar” 중 bar를 baz로 치환한다.
131
UNIX의 활용 - VI Editor(cont.)
블록 명령 블록을 file에 저장, 첨가 명령모드 ":" 프롬프트 상에서 : 10,20w [file name] : 블록을 file에 저장 : 10,20w >> [file name] : 블록을 file에 추가 블록 읽어 오기 : 10,20r [file name] : 10에서 20까지에 file을 읽어 현재 줄에 삽입 블록 자르기 여러분이 수정을 하거나 삭제를 하면 버퍼에 그 내용을 복사를 합니다. 여기서 필요한 부분을 버퍼에 복사하는 것을 yank 라 합니다. 이 내용을 나중에 다시 불러와서 사용할 수 있습니다. buffer에도 이름을 부여하여 블록을 저장할 수 있습니다. ( " 사용) "name5dd : 현재 줄에서 5줄을 삭제하고 name으로(여러분이 부여한) 버퍼에 기록
132
UNIX의 활용 - VI Editor(cont.)
블록 복사 yw : 한 단어 버퍼에 기록 y$ : 줄의 끝까지 기록 yy : 현재 줄을 버퍼에 기록 역시 name을 주어 buffer에 기록 할 수 있다. 블록 붙이기 커서를 원하는 곳으로 이동한 후 p : 현재 커서 위치 오른쪽에 추가한다. P : 현재 커서 위치 왼쪽에 추가한다. namep : buffer에 있는 name의 블록을 현재 위치에 추가 다른 file 편집 % vi file file file file 다른 file로 이동할 때는 : 프롬프트 상에서 :n 이라 입력한다. : shell 이라 치면 VI를 종료하지 않고 shell 화면으로 나갈 수 있다. 다시 VI로 이동할 때는 exit라 입력한다.
133
UNIX의 활용 - VI Editor(cont.)
Vi 상태에서 :set all을 입력하면 현재 사용중인 VI의 옵션 지정상태를 볼 수 있습니다. 이러한 옵션은 여러분의 HOME DIRECTORY에 .exrc란 file에 지정하지 않으면 디폴트값을 사용합니다. 다음은 현재 저자의 .exrc 의 내용입니다. set wm=10 set redraw set ai set dir=/usr1/comsin/temp
134
UNIX의 활용 - VI Editor(cont.)
옵 션 약 자 Defaulte Value 의 미 autoindent ai noai 자동 들여쓰기, 즉 바로 전의 행과 시작을 같이함 ignorecase ic noic 탐색에 있어 대소문자를 구별하지 않음 magic . * [ ~ 등을 탐색 또는 정규 표현식의 와일드 카드로 또는 메타문자로 사용 numver nu nonu 에디터 각 행에 행번호가 매겨짐 redraw noredraw 각 문자를 항상 알맞은 위치에 나타내 줌 noredraw은 1200보울 이하의 느린 터미널에 쓰임 tabstap ts ts=8 Tab키 또는 Ctrl-I에 대응되는 공백의 개수 저장 wrapscan ws / 또는 ? 연산자로 탐색을 하는 경우 사용됨 wrapmargin wm ws=0 오른쪽 여백의 크기를지정
135
UNIX의 활용 – 자신의 환경 만들기 History
C shell 과 Korn shell은 여러분이 입력함에 따라 명령표를 만들어내고 각각에 명령 번호를 지정한다. C shell : C shell은 default로 지난번 로그인의 마지막 명령만을 기억하고 있다. 예) & histrory 명령들의 목록을 작성하기 위해서는 set history=n 이라는 환경을 설정해야 한다. 예) % set history=50 : 50개의 이전 명령 기억(화면에 변화 없음) % set 항상 로그인 했을 때 이 history 기능을 사용하려면 환경 설정 file .cshrc에 set history=50 이란 내용을 추가
136
UNIX의 활용 – 자신의 환경 만들기(cont.)
C Shell의 history 명령 사용법 명 령 기 능 !! 이전의 명령 반복 !$ 이전 명령의 마지막 단어를 반복 !* 이전의 명령의 첫번째 단어를 제외한 모든 단어를 반복 ^a^b 이전 명령에서 a를 b로 대체 !n History 목록에서 번호 n의 명령을 반복
137
UNIX의 활용 – 자신의 환경 만들기(cont.)
Alias 축약어. 긴 명령을 alias명령을 이용하여 쉽게 타이핑 할 수 있음 이 축약어 역시 여러분이 계속 사용하고 싶다면 .cshrc file 안에 넣어 두면 됩니다. 사용법 : alias [새로운 alias명] [축약할 명령어] 예) DOS명령어 dir를 쳐서 ls –l 의 출력이 나타나게 하는 예제 % alias : 현재 자신의 alias 상황을 보여줌 % alias dir ‘ls –l’ % dir
138
UNIX의 활용 – 자신의 환경 만들기(cont.)
Shell 변수 shell에는 각각의 shell이 사용하는 shell 변수가 있음 C shell에는 두 가지 종류의 shell 변수가 있습니다. 일반 shell 변수 : set 명령을 사용하여 생성하고 새로운 shell(서브 shell)을 시작하면 인식할 수 없음 환경 shell 변수 : setenv 명령을 사용하여 생성하고 새로운 shell(서브 shell)에서도 인식가능함 일반 변수는 프롬프트 상에서 set 명령을 그리고 환경 shell 변수는 setenv 명령을 내리면 알 수 있습니다. 그리고 shell 변수명을 지정할 때 일반 shell 변수는 알파벳 소문자를 그리고 환경 shell 변수명을 지정할 때는 대문자를 사용하는 것이 BSD 계열의 Unix의 전통이다.
139
UNIX의 활용 – 자신의 환경 만들기(cont.)
환경 shell 변수는 서브 shell에서도 인식이 되므로 보통 .login file에 저장합니다. 환경 변수 값 알아보기 % echo $변수 name 일반 shell 변수 값 지정 % set 변수명=값 보통 값을 지정할 때 "="기호 사이에 빈칸이 포함되어서는 안되나 ' 기호나 " 기호를 사용하면 가능하다. 환경 shell 변수 값 지정 % setenv 변수명 값 : "=" 기호를 사용하지 않는다. shell 변수 제거 % unset 변수명 % unsetenv 변수명
140
UNIX의 활용 – 자신의 환경 만들기(cont.)
Default Shell 변수 변 수 설 명 HOME 사용자의 홈 디렉토리. 아무런 디렉토리 지정없이 cd명령을 수행했을 때 이동되는 디렉토리. SHELL 사용자가 사용하는 Shell. VI같은 프로그램에서 Shell로 잠시 빠져 나갈 때 생성하는 새로운 Shell이 바로 이 SHELL이다. TERM 터미널에 관련된 값. DEC사의 Visual Terminal Model 100이 표준임. USER UID와 계정이름을 확인할 때 사용하는 사용자 이름 MAIL 편지가 Default로 들어가게 되는 우편함의 위치. LONGNAME USER의 Full Name. PATH 사용자가 명령을 입력했을 때 검색할 디렉토리와 순서 정의 NAME 사용자의 전체이름. 전자우편과 인쇄용 프로그램들은 사용자의 전체이름이 필요할 때가 있음. 이 때 이 정보가 사용됨
141
UNIX의 활용 – 자신의 환경 만들기(cont.)
Shell Script Unix 표준 명령어를 조합하여 새로운 명령어를 만들 수 있도록 shell의 기능을 활용할 수 있음 shell은 Unix 프로그램과 마찬가지로 file로부터 명령을 입력받을 수 있다. 이런 Unix 명령들로 구성된 file을 Shell Script라 함. shell script는 Unix의 명령어들을 기록한 파일로 이루어진다. shell script는 sh 'file name' 으로 실행된다. shell script가 기록된 file을 Unix 명령어처럼 직접 실행할 수 있도록 하려면 chmod 명령으로 실행 권한을 부여하면 된다. C shell은 sh(bourn shell)의 script도 실행할 수 있고 C shell의 script 언어를 이용한 script 명령을 실행할 수 있다.
142
UNIX의 활용 – 자신의 환경 만들기(cont.)
Shell script 예제 다음을 입력한 file을 만들고 chmod 명령으로 실행권한을 부여하여 실행시켜보십시오. % echo “---- 현재 사용자의 프로그램 ----” % w | sed '1,2d' | awk ‘{print "현재 "$1"님은 "$5 $6 $7"을 실행하고 있습니다.”}' | sed 's/[1-9]//g' .cshrc에 다음의 내용을 적어주면 set filec 파일 이름의 전체를 입력하지 않아도 인식가능한 곳까지만 타이핑해도 shell 자체에서 file name을 결정해 준다.
143
UNIX의 활용 – Communication
tty : 어떤 디바이스를 통해 연결되었는가를 알기 위해서 사용. tty 디바이스는 하나의 Unix file 이다. Write 다른 사람(같은 서버 사용자)과 메시지를 주고받을 수 있도록 명령입니다. 예) write [응답할 사용자 ID] 만약 당신이 write imp 이라고 했다면 imp 사용자의 화면에는 다음의 내용이 표시된다. message from root on bravo(pts/0) [ 9월 14일 월 14:19:43 ] ... 이때 통신 예의는 imp가 응답하기 전까지는 먼저 메시지를 보내서는 안된다는 것이다. imp가 응답을 하면 그때부터 서로 메시지를 주고받으면 된다. 종료는 ctrl-D를 누르시면 됩니다.
144
UNIX의 활용 – Communication(cont.)
mesg : 상대방의 메시지를 수신 할 것인가 안 할 것인가를 결정. mesg y : 메시지 수신 허가 mesg n : 메시지 수신 불허 Mail Unix의 모든 기능중 가장 인기 있는 것 중의 하나 메일 프로그램은 여러 가지가 있음 mail 그리고 SVR4 이후에 mailx 라고 불리는 것이 있음 mailx는 Berkeley mail이라고도 불림 여러분이 만일 이미 메일을 받았을 때 mailx를 실행시키면 다음과 같은 내용이 출력된다. mailx version 5.0 Tue Jul 15 21:29:48 PDT 도움말 필요시 ? 입력. "/var/mail/imp": 1개 메시지 1개 신규 >N 1 imp Fri Dec 10 20: /330 test
145
UNIX의 활용 – Communication(cont.)
메시지를 일기 위해서는 읽고자하는 색인번호 입력 메시지 작성의 종료 : ^Ctrl-D나 ‘.’를 새로운 라인에서 입력 Mailx의 대부분의 명령은 첫글지만 입력하여 실행 가능 mailx 명령 headers 표제(제목)들을 나열해 줌 help or ? Mailx 명령들에 대한 요약정보를 알려줌 delete 지정된 메시지를 삭제 mail 주소 지정된 주소로 메일을 보냄 print 메시지 지정된 메시지를 보여줌 reply 지금 읽은 메시지에 답신을 지정 undelete 삭제를 마크한 메시지를 해제 save [file] 파일에 메시지를 보관 quit 메일프로그램 종료
146
UNIX의 활용 – Communication(cont.)
mail 보내기 % mailx [받을 사람 ID] Subject : 보내고자 하는 메시지의 제목 미리 file로 작성한 내용을 메일로 보내고자 할 때 % mailx –s “메일 제목” [받는 사람 ID] < 보낼 filename 메시지를 입력하면서 사용할 수 있는 명령 ~? : 도움말 ~b : 메시지를 여러 명에게 복사해서 보낼 때 사용. 받은 사람들은 공동 수신자를 알 수 없음 ~c : 메시지를 여러 명에게 복사해서 보낼 때 사용. 받은 사람들이 공동 수신자를 알 수 있음 메일 환경 설정 파일(.mailrc) set askcc set folder =/usr/imp/Mail
Similar presentations