Part 1 UNIX 이해 제01장 운영체제 개요 ... 21 1.1 운영체제의 개요 ... 23 1.1.1 운영체제의 개념 ... 23 1.1.2 운영체제의 구성 요소 ... 24 1.1.3 운영체제의 목적 ... 26 1.2 운영체제의 발전 및 분류 ... 27 1.2.1 운영체제의 발전 ... 27 1.2.2 운영체제의 분류 ... 28 1.3 UNIX 운영체제의 개발 ... 32 1.3.1 UNIX의 출발 ... 32 1.3.2 UNIX의 개발 ... 33 1.3.3 UNIX의 표준화 ... 35 1.4 UNIX 운영체제의 이해 ... 37 1.4.1 UNIX의 특징 ... 37 1.4.2 UNIX의 구성 ... 39 1.5 리눅스 운영체제의 이해 ... 43 1.6 요약 정리 ... 44 제02장 운영체제 구조 ... 51 2.1 파일 시스템 ... 53 2.1.1 데이터 블록과 디스크 할당 ... 55 2.1.2 inode ... 60 2.1.3 수퍼 블록(Super Block) ... 63 2.2 프로세스 ... 64 2.2.1 프로세스의 생성과 종료 ... 64 2.2.2 프로세스의 상태 전이 ... 60 2.2.3 컨텍스트(Context) ... 68 2.2.4 컨텍스트 스위칭(Context Switching) ... 69 2.3 스케줄링 ... 70 2.3.1 스케줄링 방식 ... 70 2.3.2 스케줄링 알고리즘 ... 70 2.3.3 UNIX 시스템의 스케줄링 ... 72 2.4 메모리 ... 75 2.4.1 메모리 관리 ... 76 2.4.2 가상 메모리 ... 78 2.5 요약 정리 ... 81 Part 2 UNIX 기본 제03장 시스템 기본 ... 89 3.1 시스템 접근 ... 91 3.1.1 로그인 ... 91 3.1.2 로그아웃 ... 100 3.2 사용자 정보 ... 101 3.2.1 /etc/passwd 파일 ... 101 3.2.2 사용자 계정과 사용자 ID ... 103 3.2.3 사용자 확인 ... 104 3.2.4 사용자 전환 ... 105 3.2.5 패스워드 변경 ... 107 3.3 그룹 정보 ... 110 3.3.1 그룹명과 그룹 ID ... 110 3.3.2 기본 그룹과 보조 그룹 ... 110 3.3.3 /etc/group 파일 ... 112 3.4 환경 정보 ... 114 3.4.1 쉘(Shell) ... 114 3.4.2 쉘의 기능 ... 116 3.4.3 쉘 변수 ... 126 3.5 요약 정리 ... 135 제04장 파일 시스템 응용 ... 141 4.1 디렉토리 관리 ... 143 4.1.1 디렉토리(파일)정보 출력 - ls ... 143 4.1.2 디렉토리 간의 이동 - cd ... 149 4.1.3 현재 디렉토리 확인 - pwd ... 152 4.1.4 새로운 디렉토리 생성 - mkdir ... 152 4.1.5 기존 디렉토리 삭제 - rmdir ... 155 4.2 파일 관리 ... 157 4.2.1 파일 보기 - cat / more / head / tail ... 157 4.2.2 파일 이동 - mv ... 164 4.2.3 파일 복사 - cp ... 166 4.2.4 파일 삭제 - rm ... 168 4.2.5 파일 링크 - ln ... 172 4.3 파일 권한 관리 ... 178 4.3.1 접근 권한 변경 - chmod ... 178 4.3.2 소유권 또는 그룹 변경 - chown, chgrp ... 180 4.3.3 접근 시간 변경 - touch ... 182 4.3.4 접근 권한 마스크 - umask ... 185 4.4 파일 응용 ... 187 4.4.1 파일 내 문자 개수 - wc ... 187 4.4.2 파일 가공 - cut ... 188 4.4.3 파일 가공 - paste ... 191 4.4.4 파일 내 문자 치환 - tr ... 194 4.4.5 파일 정렬 - sort ... 197 4.4.6 파일 분할 - split ... 204 4.4.7 파일 내 인접행 비교 - uniq ... 206 4.4.8 파일 비교 - cmp ... 208 4.4.9 파일 비교 - comm ... 210 4.4.10 파일 비교 - diff ... 213 4.4.11 패턴 검색 - grep ... 215 4.4.12 파일 검색 - find ... 219 4.5 요약 정리 ... 234 제05장 프로세스 응용 ... 239 5.1 프로세스 식별자 ... 241 5.2 프로세스 정보 확인 - ps ... 242 5.3 프로세스 간 통신(시그널) ... 248 5.3.1 시그널의 발생 및 종류 ... 248 5.3.2 kill 명령어 ... 250 5.4 프로세스 제어 ... 253 5.4.1 프로세스 그룹과 터미널 ... 253 5.4.2 포그라운드 모드와 백그라운드 모드 사용 예 ... 255 5.4.3 프로세스 제어 명령어 ... 259 5.5 프로세스 권한 ... 262 5.5.1 실제 사용자와 유효 사용자 ... 262 5.5.2 특수 권한 ... 263 5.6 요약 정리 ... 272 Part 3 업무별 응용 제06장 프로그램 개발자 ... 279 6.1 파일 편집기 - vi ... 282 6.1.1 vi의 모드 ... 282 6.1.2 vi의 시작 ... 283 6.1.3 vi의 종료 ... 285 6.1.4 내용 입력 ... 286 6.1.5 커서 이동 ... 288 6.1.5 화면 이동 ... 290 6.1.7 내용 수정 ... 291 6.1.8 내용 삭제 ... 292 6.1.9 복사 / 붙여 넣기 / 이동 ... 292 6.1.10 검색 ... 293 6.1.11 치환 ... 294 6.1.12 마크 ... 295 6.1.13 기타 유용한 명령들 ... 296 6.1.14 Last-line 모드 ... 297 6.2 C 컴파일러 - gcc ... 299 6.2.1 gcc의 시작 ... 300 6.2.2 컴파일 결과 파일 -o 옵션 ... 302 6.2.3 목적(Object) 파일 생성 -c 옵션 ... 304 6.2.4 헤더 파일의 경로 -l 옵션 ... 312 6.2.5 라이브러리 관련 옵션 -i, -L 옵션 ... 314 6.2.6 컴파일 매크로 -D 옵션 ... 319 6.2.7 라이브러리 관리 ... 323 6.3 컴파일 유틸리티 - make ... 327 6.3.1 구조와 동작 원리 ... 327 6.3.2 종속성(Dependency) ... 334 6.3.3 레이블(Label) ... 337 6.3.4 실행 방법 ... 339 6.3.5 매크로 기능 ... 342 6.3.6 디폴트 확장자 규칙 ... 349 6.3.7 .SUFFIXES 매크로 ... 354 6.3.8 기타 정보 ... 357 6.4 태그 생성 유틸리티 - ctags ... 358 6.4.1 태그의 필요성 ... 358 6.4.2 ctags 사용법 ... 358 6.5 디버깅 유틸리티 - gdb ... 364 6.5.1 디버거의 필요성 ... 364 6.5.2 gdb 사용법 ... 365 6.6 요약 정리 ... 381 제07장 시스템 관리자 ... 393 7.1 시스템 시작과 종료 ... 395 7.1.1 시스템 시작 ... 395 7.1.2 시스템 종료 ... 402 7.2 사용자 관리 ... 405 7.2.1 사용자 계정 추가 - useradd ... 406 7.2.2 사용자 계정 변경 - usermod ... 413 7.2.3 사용자 계정 삭제 - userdel ... 415 7.2.4 그룹 추가 - groupadd ... 418 7.2.5 그룹 삭제 - groupdel ... 419 7.3 파일 시스템 관리 ... 421 7.3.1 파일 시스템 연결 - mount ... 421 7.3.2 파일 시스템 연결 해제 - umount ... 424 7.3.3 하드디스크 사용량 - du ... 428 7.3.4 파일 시스템 용량 정보 - df ... 429 7.3.5 파일 및 디렉토리의 압축 및 압축 해제 ... 431 7.4 프로세스 스케줄 관리 ... 449 7.4.1 정기적 스케줄 관리 - cron ... 449 7.4.2 일시적 스케줄 관리 - at ... 456 7.5 요약 정리 ... 461 Part 4 고급 응용 제08장 파일 편집 고급 ... 475 8.1 라인 단위 편집 - sed ... 477 8.1.1 기본 문법 ... 477 8.1.2 편집 스크립트 ... 478 8.1.3 sed 실습 ... 480 8.1.4 sed 적용 사례 ... 493 8.2 필드 단위 패턴 처리 - awk ... 497 8.2.1 기본 문법 ... 497 8.2.2 awk에서 사용하는 패턴과 액션의 구조 ... 499 8.2.3 awk 시스템 변수 ... 500 8.2.4 awk 연산자 ... 506 8.2.5 awk 제어문 ... 509 8.2.6 awk 내장 함수 ... 513 8.2.7 awk 적용 사례 ... 518 8.3 sed 및 awk 활용 ... 521 8.4 요약 정리 ... 525 제09장 쉘 프로그래밍 ... 535 9.1 쉘 스크립트의 이해 ... 537 9.1.1 쉘 스크립트의 작성 ... 538 9.1.2 쉘 스크립트의 실행 ... 539 9.1.3 쉘 스크립트의 종료 ... 541 9.2 변수 ... 544 9.2.1 사용자 정의 변수 ... 545 9.2.2 쉘 변수(Shell Variable) ... 547 9.2.3 특수 변수(Special Variable) ... 549 9.2.4 위치 인수(Positional Parameter) ... 550 9.3 조건문 - test ... 554 9.3.1 문자열 비교 ... 554 9.3.2 산술 비교 ... 557 9.3.3 파일 검사 ... 559 9.3.4 논리 연산 ... 561 9.4 제어문 ... 563 9.4.1 if-then-fi 문 ... 563 9.4.2 if-then-else-fi 문 ... 564 9.4.3 if-then-elif-then-else-fi 문 ... 566 9.4.4 case 문 ... 569 9.5 반복문 - for / while / until ... 571 9.5.1 for 문 ... 571 9.5.2 while 문 ... 575 9.5.3 until 문 ... 579 9.6 목록 ... 579 9.6.1 AND 목록 ... 579 9.6.2 OR 목록 ... 581 9.7 함수 ... 583 9.8 내부 명령어 ... 586 9.8.1 exit 명령어 ... 586 9.8.2 return 명령어 ... 587 9.8.3 break 명령어 ... 587 9.8.4 continue 명령어 ... 588 9.8.5 expr 명령어 ... 589 9.8.6 read 명령어 ... 590 9.9 쉘 스크립트 사례 ... 591 9.9.1 자원 모니터링 결과 저장 ... 591 9.9.2 프로세스의 강제 종료 ... 596 9.9.3 FTP를 이용한 자동 파일 백업 ... 601 9.10 요약 정리 ... 608 제10장 시스템 성능 관리 ... 621 10.1 성능 관리 ... 623 10.1.1 성능 측정 기준 및 평가 요소 ... 625 10.1.2 성능 측정(테스트) ... 628 10.1.3 성능 진단 및 튜닝 ... 631 10.2 UNIX 시스템의 성능 관리 ... 634 10.2.1 CPU 성능 측정 ... 635 10.2.2 메모리 성능 측정 ... 645 10.2.3 디스크 입출력 성능 측정 ... 654 10.3 요약 정리 ... 658 제11장 네트워크 관리 ... 669 11.1 프로토콜의 이해 ... 671 11.1.1 프로토콜과 표준 ... 671 11.1.2 OSI 7 Layer ... 674 11.2 TCP/IP 프로토콜 ... 678 11.2.1 TCP/IP 프로토콜의 개요 ... 678 11.2.2 트랜스포트 계층(Transport Layer) ... 680 11.2.3 인터넷 계층(Internal Layer) ... 683 11.3 네트워크 관리 ... 687 11.3.1 연결 테스트 - ping ... 687 11.3.2 경로 추적 - traceroute ... 694 11.3.3 네트워크 인터페이스 진단 - netstat ... 698 11.3.4 네트워크 인터페이스 설정 - ifconfig ... 712 11.3.5 라우팅 테이블 설정 - route ... 717 11.4 요약 정리 ... 723 제12장 시스템 보안 ... 733 12.1 보안의 개요 ... 735 12.2 시스템 보안 ... 737 12.2.1 사용자의 패스워드 관리 ... 737 12.2.2 파일 접근 권한 - umask ... 741 12.2.3 실행 권한 - setuid, setgid ... 743 12.2.4 디렉토리 접근 권한 - sticky-bit ... 747 12.3 네트워크 보안 ... 749 12.3.1 보안 쉘 - SSH ... 749 12.3.2 수퍼 서버 - inetd 데몬 ... 751 12.3.3 접근 통제 - Tcpwrapper ... 756 12.4 요약 정리 ... 766