리눅스마스터 2급 2차 · 7일 벼락치기 가이드
1차 자료
D-day 계산 중…
cat README.md

리눅스마스터 2급 2차
7일 벼락치기 완전 가이드

리눅스를 처음 공부하는 사람도 이해할 수 있게, 어려운 용어는 전부 일상적인 비유로 풀어 썼습니다. 하루에 한 챕터씩 훑고, 마지막 챕터에서 헷갈리는 함정 문제로 마무리하는 구성이에요. 왼쪽 위 ☰ 버튼을 누르면 언제든 목차로 이동할 수 있습니다.

🔖 북마크 기능 안내
각 챕터·섹션 제목 옆에 아이콘이 있어요. 시험 전에 자주 헷갈리는 개념이나 다시 보고 싶은 부분을 눌러서 표시해두면, 이 브라우저에 계속 저장됩니다. 페이지를 새로고침하거나 껐다 켜도 사라지지 않으니, 시험 전까지 두고두고 복습용으로 써보세요. (자동으로 지워지지 않으니 다음 회차 시험 준비할 때도 그대로 남아있어요. 다른 기기·다른 브라우저와는 공유되지 않고, 이 브라우저에서만 저장됩니다)
guest@linux-master:~/ch01$ cat chapter-1.md

🔐 파일 시스템 관련 명령어

1-1. 소유권 — chown · chgrp

파일에는 주인(소유자)소속(그룹)이 붙어 있습니다. 이걸 바꾸는 명령이 둘입니다.

명령바꾸는 것예시
chown소유자 (그리고 그룹까지)chown ihd test
chgrp그룹만chgrp project test
  • chown ihd:project test — 소유자를 ihd, 그룹을 project로 동시에 변경
  • chown :root test — 콜론만 붙이면 그룹만 변경 (chgrp와 같은 효과)
  • -R : 하위 디렉터리까지 전부 (recursive) — chown -R root ihd
  • chgrp -h : 심볼릭 링크 파일 자체의 그룹 소유권을 변경

1-2. 허가권 — chmod와 ls -l 읽기자주 출제 22문항

ls -l 결과의 맨 앞 10글자가 파일 유형 1글자 + 권한 9글자입니다.

-rwxr-xr-x  2 root project 4096 Apr  6 10:22 project
 │└┬┘└┬┘└┬┘
 │ │  │  └── others(기타 사용자)
 │ │  └───── group(그룹)
 │ └──────── user(소유자)
 └────────── 파일 유형
기호파일 유형
-일반 파일
d디렉터리
l심볼릭 링크
b블록 장치 (하드디스크 등)
c문자 장치 (입출력 장치)
s소켓
p파이프(FIFO)

chmod 사용법 2가지

  • 숫자 방식 — r=4, w=2, x=1을 더합니다. chmod 666 a.txt → rw-rw-rw-
  • 문자 방식 — 대상(u g o a) + 연산자(+ - =) + 권한(r w x)
    • chmod u-x file — 소유자의 실행 권한 제거
    • chmod a=rx file — 모든 사용자에게 읽기·실행만 부여 (나머지는 제거)
    • chmod -R o+w TST — TST와 그 안의 모든 파일에 기타 사용자 쓰기 권한 추가
    • chmod g=r lin.txt — 그룹 권한을 읽기만으로 설정
bash
root@linux-master:~# ls -l lin.sh  # 현재 권한 확인
-rw-rw-r--  1 ihd ihd 1079 Jan 27 16:29 lin.sh
root@linux-master:~# chmod 755 lin.sh  # 숫자 방식 — rwxr-xr-x
root@linux-master:~# chmod u-x,go+r lin.sh  # 문자 방식 — 소유자 실행 제거, 나머지 읽기 추가
root@linux-master:~# ls -l lin.sh
-rw-r--r--  1 ihd ihd 1079 Jan 27 16:29 lin.sh

⚠️ 디렉터리에서 x는 "실행"이 아니라 그 디렉터리 안으로 들어갈 수 있는 권한입니다. w는 디렉터리 안에 파일을 만들거나 지울 수 있는 권한이고요.

1-3. 특수 권한 — SetUID · SetGID · Sticky Bit

특수 권한숫자기호의미
SetUID4000s (소유자 자리)실행하는 동안 파일 소유자의 권한으로 동작
SetGID2000s (그룹 자리)실행하는 동안 파일 그룹의 권한으로 동작. 디렉터리에 걸면 그 안에 생기는 파일의 그룹이 디렉터리 그룹으로 지정됨
Sticky Bit1000t (기타 자리)누구나 파일을 만들 수 있지만 삭제는 소유자와 root만. 공용 디렉터리용
  • 실행 권한(x)이 있는 파일에 걸면 소문자 s/t, 없는 파일에 걸면 대문자 S/T로 표시됩니다.
  • 대표 예시 — /usr/bin/passwd에는 SetUID가 걸려 있습니다. 일반 사용자가 자기 비밀번호를 바꾸려면 root 소유인 /etc/shadow를 고쳐야 하기 때문입니다.
  • 대표 예시 — /tmp에는 Sticky Bit가 걸려 있습니다. 누구나 임시 파일을 만들되 남의 파일은 못 지우게 하려고요.
bash
root@linux-master:~# ls -l /usr/bin/passwd  # 소유자 자리에 s → Set-UID
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd
root@linux-master:~# ls -ld /tmp  # 기타 자리에 t → Sticky Bit
drwxrwxrwt. 15 root root 4096 Aug  3 09:12 /tmp
root@linux-master:~# chmod 2775 /project  # Set-GID 부여
root@linux-master:~# ls -ld /project
drwxrwsr-x. 2 root project 6 Aug  3 09:15 /project

시험 단골 계산chmod 3770 /project

  • 맨 앞 3 = SetGID(2) + Sticky Bit(1)
  • 770 = 소유자 rwx, 그룹 rwx, 기타 사용자 없음
  • 결과: project 그룹원은 자유롭게 파일을 만들되 자기가 만든 파일만 삭제할 수 있고, 새로 만든 파일의 그룹은 자동으로 project가 됩니다.

1-4. umask — 새로 만들 때의 기본 권한

  • 기본 권한: 파일 666, 디렉터리 777 (파일에 x가 기본으로 안 붙는 게 포인트)
  • 실제 권한 = 기본 권한 umask 값
  • umask 0022 → 파일 644, 디렉터리 755
  • umask -S → 숫자 대신 u=rwx,g=rx,o=rx 처럼 문자로 표시
  • 맨 앞자리 숫자는 특수 권한 자리입니다.

1-5. 마운트와 파일 시스템 만들기🔥 빈출 29문항

명령설명
mount장치를 디렉터리에 연결. -t로 파일 시스템 유형 지정
mount -t ext4 /dev/sdb1 /data
umount연결 해제. USB·CD는 반드시 umount 후 제거
eject이동식 장치 꺼내기 (내부적으로 umount를 먼저 수행)
fdisk파티션 생성·삭제·타입 변경. -l 파티션 테이블 출력
mkfs파일 시스템 생성(포맷). -t로 유형 지정
mke2fsext2/3/4 전용 포맷. -j를 붙이면 저널링이 켜져 ext3으로 생성

작업 순서: fdisk로 파티션 나누기 → mkfs·mke2fs로 포맷 → mount로 연결

fdisk 파티션 타입 ID — Linux 83 / Swap 82 / LVM 8e / RAID fd

mount -o remount,rw /home — 이미 마운트된 /home을 읽기·쓰기 모드로 다시 마운트

1-6. 점검·복구 — fsck 계열

  • fsck — 파일 시스템 무결성 점검·복구. 손상된 파일은 /lost+found로 연결됩니다.
  • e2fsck — ext2/ext3/ext4 전용 점검·복구
  • xfs_repair — XFS 전용 점검·복구

⚠️ /lost+found가 나오면 fsck를 떠올리세요.

1-7. 용량 확인 — du · df

구분dudf
보는 것디렉터리별 사용량 (얼마나 쓰고 있나)파티션별 남은 용량 (얼마나 남았나)
주요 옵션-s 합계만 · -h 읽기 쉬운 단위-T 파일 시스템 유형 · -h 단위 · -a 0블록 포함 전부
bash
root@linux-master:~# df -hT  # 파티션별 남은 용량과 파일 시스템 유형
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      xfs        47G  7.4G   40G  16% /
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
root@linux-master:~# du -sh ~ihduser  # 특정 홈 디렉터리 사용량 합계
1.2G	/home/ihduser

1-8. 디스크 쿼터 (사용량 제한)자주 출제 16문항

  • quota — 사용자의 현재 사용량·제한 확인
  • quotacheck — 파일 시스템을 훑어 쿼터 파일 생성·확인·수정
  • edquota편집기(vi)를 열어서 할당량 설정. -p는 다른 사용자 설정을 그대로 복사
    edquota -p bookmark ihd (bookmark의 설정을 ihd에 동일 적용)
  • setquota — 편집기 없이 명령행에서 바로 설정
    setquota -u ihd 20M 30M 0 0 /home (블록 soft/hard, inode soft/hard)
  • repquota — 시스템 전체 쿼터 보고서 출력
  • xfs_quota — XFS용. -x -c 옵션과 함께 사용
  • quotaon / quotaoff — 쿼터 활성화·비활성화

⚠️ edquota(편집기 사용) ↔ setquota(명령행 직접)의 대비가 자주 출제됩니다.

1-9. 파일 시스템 정보가 담긴 파일들자주 출제 18문항

파일내용
/etc/fstab부팅 시 자동 마운트할 정보(정적). 파일 시스템 테이블
/etc/mtab현재 마운트된 파일 시스템 정보(동적)
/proc/partitions현재 시스템에 있는 파티션 정보

/etc/fstab의 6개 필드

[장치명] [마운트 포인트] [파일 시스템 종류] [옵션] [dump] [fsck 순서]
  • 1번 필드에는 장치명 외에 UUID·LABEL·네트워크 주소·파일명도 쓸 수 있습니다.
  • 5번 dump — 백업 대상 여부, 6번 pass — 부팅 시 fsck 검사 순서

블록 장치 확인 명령

  • blkid — 파티션의 UUID와 파일 시스템 유형 확인
  • lsblk — 블록 장치를 트리 형태로 표시
bash
root@linux-master:~# lsblk  # 블록 장치를 트리로
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk
├─sda1   8:1    0   47G  0 part /
└─sda2   8:2    0    3G  0 part [SWAP]
root@linux-master:~# blkid  # UUID와 파일 시스템 유형
/dev/sda1: UUID="a1b2c3d4-..." TYPE="xfs"
/dev/sda2: UUID="e5f6a7b8-..." TYPE="swap"

1-10. 파일 시스템 종류

종류특징
ext2파일명 255자, 단일 파일 2GB, 저널링 없음
ext3ext2 확장 + 저널링 + ACL
ext4ext3의 확장. 대용량 지원
XFS · JFS · ReiserFS대표적인 저널링 파일 시스템 (JFS는 IBM 개발)
NFS네트워크 파일 시스템 — 리눅스·유닉스끼리 공유
CIFSSMB의 확장 — 윈도우와 공유
NTFS윈도우 파일 시스템
ISO9660 · UDFCD / DVD 파일 시스템

1-11. RAID와 LVM자주 출제 20문항

RAID — 디스크 여러 개를 묶어 성능이나 안정성을 얻는 기술

레벨방식최소 디스크특징
RAID 0스트라이핑2개속도만. 백업 기능 없음
RAID 1미러링(이중화)2개복구 가능하지만 절반을 복제에 사용
RAID 5패리티 1개3개디스크 1개 고장까지 복구
RAID 6패리티 2개4개디스크 2개 고장까지 복구
RAID 10미러링 후 스트라이핑4개속도 + 안정성

LVM — 여러 물리 디스크를 논리 디스크로 묶어 유연하게 나눠 쓰는 기술

용어의미
PV (Physical Volume)디스크를 LVM에서 쓸 수 있게 변환한 것
VG (Volume Group)PV들을 모아 만든 그룹
LV (Logical Volume)VG에서 원하는 크기로 잘라낸 실제 마운트할 파티션
PE / LEPV / LV를 나눈 블록 단위 (기본 4MB, 서로 1:1 대응)

구성 순서: PV → VG → LV

guest@linux-master:~/ch02$ cat chapter-2.md

🐚 Shell

2-1. 셸의 종류와 계열🔥 빈출 34문항

계열경로만든 사람 · 특징
본 셸 계열본 셸(sh)/bin/sh스티븐 본 (벨 연구소). 최초의 표준 셸
콘 셸(ksh)/bin/ksh데이비드 콘 (AT&T). 본 셸 확장
배시 셸(bash)/bin/bashGNU 프로젝트. 리눅스 표준 셸, POSIX 호환
지 셸(zsh)/bin/zsh콘 셸을 다시 작성
C 셸 계열C 셸(csh)/bin/csh빌 조이 (버클리). C 언어 기반
tc 셸(tcsh)/bin/tcsh확장 C 셸. BSD 계열에서 많이 사용

bash = Bourne Again SHell. dash는 데비안에서 sh 대체용으로 씁니다.

2-2. 셸 확인과 변경자주 출제 20문항

방법확인하는 내용
echo $SHELL지금 로그인해서 쓰고 있는 셸
cat /etc/shells이 시스템에서 쓸 수 있는 셸 목록
cat /etc/passwd계정마다 지정된 로그인 셸

chsh (change shell) — 일반 사용자가 자기 셸을 바꿀 때

  • -l : /etc/shells 안의 셸 목록 나열 (list)
  • -s : 로그인 셸 변경 — chsh -s /bin/bash
  • -u : 사용법 표시 (help)
  • -c : 변경된 셸에 대한 설명 (comment)
bash
root@linux-master:~# echo $SHELL  # 로그인할 때 배정받은 셸
/bin/bash
root@linux-master:~# cat /etc/shells  # 쓸 수 있는 셸 목록
/bin/sh
/bin/bash
/bin/csh
/bin/tcsh
root@linux-master:~# chsh -s /bin/csh  # 로그인 셸 변경
root@linux-master:~# grep ihd /etc/passwd  # 계정에 지정된 셸 확인
ihd:x:1000:1000::/home/ihd:/bin/csh

usermod -s /bin/bash ihd — 관리자가 남의 계정 셸을 바꿀 때

2-3. 환경 변수🔥 빈출 40문항

변수의미
PATH명령어를 찾을 디렉터리 목록
TERM터미널 종류 이름
TMOUT일정 시간 입력이 없으면 자동 로그아웃
LANG기본 지원 언어
PS1프롬프트 모양
PS2명령이 다음 줄로 이어질 때 나오는 보조 프롬프트
PROMPTC 셸에서 프롬프트를 지정하는 변수 (bash의 PS1에 해당)
HISTSIZE히스토리 스택 크기
HISTFILE히스토리 파일 위치
HISTFILESIZE히스토리 파일의 물리적 크기
DISPLAYX 화면이 출력될 위치

PS1 치환 문자

  • \u 사용자명 · \h 호스트명 · \s 셸 이름
  • \w 현재 디렉터리 절대 경로 · \W 마지막 디렉터리만
  • \t 24시 시간 · \d 날짜

변수 조회 명령

명령대상
env / printenv전역(환경) 변수 출력
set지역(셸) 변수와 함수까지 출력. set -o는 셸 옵션 켜기
unset변수·함수 해제

2-4. 환경 설정 파일자주 출제 16문항

파일적용 범위내용
/etc/profile전역모든 사용자의 환경 변수와 시작 프로그램
/etc/bashrc전역모든 사용자의 별칭(alias)과 함수
~/.bash_profile개인개인 환경 변수와 시작 프로그램
~/.bashrc개인개인 별칭과 함수
~/.bash_logout개인로그아웃할 때 실행
~/.bash_history개인입력했던 명령 기록
/etc/profile.d전역시작 시 자동 실행할 스크립트를 모아두는 디렉터리

⚠️ 외우는 요령 — profile = 환경 변수, bashrc = 별칭·함수. 앞에 /etc/가 붙으면 전역, ~/면 개인.

2-5. history (명령 기록)

표현동작
!!바로 직전 명령 재실행
!n히스토리 n번 명령 실행
!-n현재로부터 n번째 이전 명령 실행
!문자열그 문자열로 시작하는 가장 최근 명령 실행
!?문자열?그 문자열을 포함하는 가장 최근 명령 실행
!$직전 명령의 마지막 인자
!*직전 명령의 모든 인자
guest@linux-master:~/ch03$ cat chapter-3.md

⚙️ 프로세스 관리

3-1. 프로세스 생성 방식 — fork와 exec자주 출제 24문항

구분fork()exec()
방식기존 프로세스를 복제기존 프로세스를 새 프로세스로 덮어씀
메모리새로 할당함새로 할당하지 않음
결과부모–자식 관계가 생김원래 프로세스는 사라짐

사용자가 로그인하면 bash를 받고, 명령을 입력하면 fork로 자식 프로세스가 생겨 실행됩니다.

최초 프로세스 — CentOS 6까지는 init, CentOS 7부터는 systemd이며 PID는 1입니다.

3-2. 데몬 — standalone vs inetd자주 출제 17문항

구분standaloneinetd (슈퍼 데몬)
동작부팅 때 떠서 메모리에 계속 상주평소엔 자고 있다가 요청이 오면 해당 서비스를 깨움
장점응답이 빠름메모리를 아낌
적합요청이 빈번한 서비스가끔 쓰는 서비스
httpd, mysql, sendmail, namedtelnet, FTP, POP3, finger, rlogin

보안상의 이유로 커널 2.4부터는 inetd 대신 xinetd가 그 역할을 합니다.

3-3. 시그널

번호이름의미
1SIGHUP터미널 연결이 끊겼을 때. 데몬 재시작에도 사용
2SIGINTCtrl+C — 실행 중인 포그라운드 작업 종료
3SIGQUITCtrl+\ — 코어 덤프하며 종료
9SIGKILL강제 종료 (무시할 수 없음)
15SIGTERMkill 명령의 기본 시그널. 가능하면 정상 종료
18SIGCONT중지된 프로세스를 다시 실행
19SIGSTOPSIGCONT를 받을 때까지 중지
20SIGTSTPCtrl+Z — 일시 중지(대기 상태로 전환)

시그널 목록은 kill -l로 확인합니다. 2·9·15·20은 번호까지 외우세요.

3-4. ps · pstree · jobs자주 출제 23문항

ps — 실행 중인 프로세스 상태 출력

  • a 모든 프로세스 · u 사용자 정보 포함 · x 터미널 없는 프로세스까지
  • ps aux — 시스템의 모든 프로세스를 소유자 정보와 함께
  • 주요 항목: USER(소유자), RSS(실제 사용 메모리), TTY(터미널), TIME(CPU 사용 시간)

STAT 값

상태
R실행 중이거나 실행 가능
S대기 중 (이벤트를 기다림)
T중지됨
D디스크 I/O 대기
Z좀비 — 종료됐지만 부모가 회수하지 않아 메모리를 차지
bash
root@linux-master:~# ps aux | head -4  # 모든 프로세스를 소유자 정보와 함께
USER  PID %CPU %MEM    VSZ   RSS TTY STAT START   TIME COMMAND
root    1  0.0  0.2 128652  7372 ?   Ss   09:00   0:05 /usr/lib/systemd/systemd
root  512  0.0  0.0      0     0 ?   Z    09:01   0:00 [defunct]
ihd  2472  0.0  0.1 116232  3084 pts/0 Ss 09:10 0:00 bash
root@linux-master:~# jobs  # 현재 셸의 작업 목록
[1]+  Stopped                 vi memo.txt
[2]-  Running                 tar cvf a.tar /opt &
  • pstree — 프로세스를 트리 구조로. -p PID 표시, -a 명령행 인자 포함
  • jobs — 현재 셸의 작업 목록 (중지·백그라운드 상태 표시)
  • pgrep — 이름으로 PID를 찾음 · pidof — 프로세스 이름의 PID 출력 · pkill — 이름으로 종료

3-5. 포그라운드 · 백그라운드 전환자주 출제 24문항

하고 싶은 것방법
처음부터 백그라운드로 실행명령 뒤에 &tar cvf a.tar /opt &
포그라운드 → 백그라운드Ctrl+Z로 일시 중지 → bg %작업번호
백그라운드 → 포그라운드fg %작업번호
포그라운드 작업 종료Ctrl+C

nohup (no hang up) — 로그아웃하거나 터미널을 닫아도 작업이 계속됩니다.
nohup tar cvf source.tar /opt/src &

bash
root@linux-master:~# tar cvf source.tar /opt/src  # 실행 중 Ctrl+Z를 누르면
^Z
[1]+  Stopped                 tar cvf source.tar /opt/src
root@linux-master:~# bg %1  # 백그라운드로 돌리기
[1]+ tar cvf source.tar /opt/src &
root@linux-master:~# fg %1  # 다시 포그라운드로
root@linux-master:~# nohup tar cvf a.tar /opt &  # 로그아웃해도 계속 실행
nohup: ignoring input and appending output to ‘nohup.out’

⚠️ 그냥 &만 붙인 백그라운드는 로그아웃하면 죽습니다. 살려두려면 nohup.

3-6. kill · killall

  • killPID를 사용, killall프로세스 이름을 사용합니다.
  • kill -l — 시그널 종류 나열
  • kill -9 PID — 강제 종료
  • kill %2작업 번호 2번인 백그라운드 작업 종료 (%가 붙으면 작업 번호)
  • 옵션 없이 kill PID를 쓰면 기본 시그널 15(SIGTERM)가 전달됩니다.

3-7. 우선순위 — nice · renice자주 출제 19문항

구분nicerenice
대상앞으로 실행할 프로세스 이름이미 실행 중인 PID
계산기존 NI 값에 더함기존 값과 무관하게 그 값으로 설정
nice -10 bashrenice 1 1222
bash
root@linux-master:~# ps -l  # 현재 PRI·NI 값 확인
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY   TIME CMD
0 S  1000  2472  2470  0  80   0 -  29058 wait   pts/0 00:00:00 bash
root@linux-master:~# nice -10 bash  # NI를 10 올려서 실행 (프로세스 이름)
root@linux-master:~# renice 5 2472  # 실행 중 프로세스의 NI를 5로 설정 (PID)
2472 (process ID) old priority 0, new priority 5
  • NI 값 범위: −20 ~ 19. −20이 가장 높은 우선순위, 19가 가장 낮음
  • NI 값을 낮추는(높은 우선순위로 만드는) 건 root만 가능. 일반 사용자는 올리기만 가능
  • 기존 NI가 −5인 상태에서 nice -10 bash → 결과는 5

3-8. top — 실시간 모니터링

  • CPU·메모리·부하 상태와 프로세스를 실시간으로 보여줍니다.
  • %CPU%MEM이 함께 보이면 top입니다 (ps -l에는 %MEM이 없습니다).
  • top -d 1 -p 4056 — PID 4056을 1초 간격으로 감시

실행 중 단축키

동작
kPID를 입력해 종료 신호 전송 (kill)
rNI 값 조정 (renice)
n표시할 프로세스 개수 지정
m메모리 항목 표시 on/off
s화면 갱신 시간 변경
q종료

3-9. cron — 주기적 실행

  • 데몬은 crond, 설정 파일은 /etc/crontab
  • crontab -e 작성·수정 · -l 목록 · -r 삭제 · -u 특정 사용자 지정

필드 순서

분  시  일  월  요일   실행할 명령
 *   4   *   *  0,1    /etc/backup.sh
# 매주 일요일·월요일 오전 4시에 실행
  • 요일: 0 또는 7 = 일요일, 1~6 = 월~토
  • /etc/crontab에는 필드 사이에 실행할 사용자명이 하나 더 들어갑니다.
guest@linux-master:~/ch04$ cat chapter-4.md

📝 에디터

4-1. 에디터 한눈에 비교🔥 빈출 53문항

에디터만든 사람특징
pico아보일 카사르메모장과 비슷. 자유 소프트웨어 라이선스가 아님
nanoGNU 프로젝트pico의 복제판. 사용법 동일
vi빌 조이BSD에 포함되어 배포. 모드형 편집기, 가장 많이 쓰임
vim브람 무레나르vi 개선판. 색상 강조로 가시성 향상
emacs리처드 스톨만LISP 기반, 비모드형. 제임스 고슬링이 기능 확장
gedit그놈 데스크톱용, GTK+ 기반. 콘솔에서는 못 씀
kwriteKDE 환경용 편집기
  • CUI(콘솔) 환경: nano, vi/vim, emacs
  • X 윈도 환경: gedit, kwrite → telnet 접속 시에는 사용 불가

4-2. pico · nano · emacs 단축키

pico / nano (Ctrl 조합)

동작
Ctrl+A행의 맨 앞으로
Ctrl+E행의 맨 끝으로 (End)
Ctrl+O파일 저장 (write Out)
Ctrl+X종료

emacs

동작
Ctrl+A / Ctrl+E행의 앞 / 끝으로 이동
Ctrl+N한 줄 아래로
Ctrl+F커서를 오른쪽으로
Ctrl+S 문자열커서 아래쪽으로 검색
Ctrl+R 문자열커서 위쪽으로 검색
Ctrl+X Ctrl+C편집 종료

4-3. vi — 세 가지 모드🔥 빈출 35문항

vi는 명령 모드 · 입력 모드 · ex(라인) 명령 모드로 나뉩니다.

입력 모드로 전환

  • i 커서 위치에 삽입 · a 커서 뒤에 삽입 · o 아랫줄을 만들며 삽입

명령 모드

동작
dd현재 줄 삭제 (숫자를 앞에 붙이면 그만큼)
yy현재 줄 복사
p / P커서 아랫줄 / 윗줄에 붙여넣기
x커서 위치의 문자 하나 삭제
u실행 취소 (undo)
r문자 하나 교체 (ra → a로 교체)
cw단어 변경
j / k한 줄 아래 / 위로 이동

검색/문자열 아래 방향, ?문자열 위 방향, n 다음, N 이전

ex 명령 모드 (콜론으로 시작)

명령동작
:w저장
:q종료 (변경 사항이 없을 때만)
:q!저장하지 않고 강제 종료
:wq저장하고 종료
:set nu / :set nonu줄 번호 표시 / 해제
:set ai자동 들여쓰기
:set list개행($)·탭 문자 표시
:set sm괄호 자동 대응 표시

4-4. vi 문자열 치환과 설정 파일

:%s/문자열/새문자열/g
  • % — 첫 줄부터 끝 줄까지 (없으면 현재 줄만)
  • g — 한 줄에 여러 개 있어도 전부 치환 (없으면 첫 번째만)
  • ^ 줄의 시작 · $ 줄의 끝 · . 현재 줄

설정 파일.exrc(vi), .virc·.vimrc(vim)에 환경 설정을 적어두면 실행할 때마다 적용됩니다.

복구 옵션vi -r 파일명은 비정상 종료로 손상된 파일을 복구합니다.

guest@linux-master:~/ch05$ cat chapter-5.md

📦 소프트웨어 설치

5-1. 배포판별 패키지 관리 도구자주 출제 15문항

배포판오프라인(로컬)온라인(의존성 해결)
레드햇 · CentOSrpmyum
페도라rpmdnf (yum의 개선판, 페도라 22부터)
데비안dpkgapt-get
우분투dpkgapt-get, aptitude
수세YaSTzypper

alien — rpm 패키지를 deb로 변환해 주는 도구

dselect — 데비안에서 dpkg를 메뉴 방식으로 다루게 해 주는 프론트엔드

5-2. rpm자주 출제 19문항

파일명 형식: sendmail-8.14.3-5.fc11.i586.rpm → 패키지명 - 버전 - 릴리즈 - 배포판 - 아키텍처

옵션동작
-i설치 (install)
-U업그레이드. 없으면 새로 설치
-F이미 설치된 경우에만 업그레이드 (freshen)
-e삭제 (erase)
-q설치 여부 질의 (query)
-h진행 과정을 #으로 표시
-V변조 검사 (S 크기, 5 MD5, T 수정일)
--nodeps의존성 무시하고 설치·삭제
--force기존 설치와 관계없이 강제 설치

질의(-q) 조합

  • -qa 설치된 모든 패키지 · -qi 패키지 정보 · -ql 파일 목록 · -qf 특정 파일을 설치한 패키지명
bash
root@linux-master:~# rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm  # 설치하며 진행률 표시
Preparing...      ################################# [100%]
   1:vsftpd        ################################# [100%]
root@linux-master:~# rpm -qa | grep sendmail  # 설치 여부 확인
sendmail-8.14.7-6.el7.x86_64
root@linux-master:~# rpm -qf /usr/bin/passwd  # 이 파일을 설치한 패키지는?
passwd-0.79-6.el7.x86_64
root@linux-master:~# rpm -e nmap --nodeps  # 의존성 무시하고 삭제

5-3. yum · dnf🔥 빈출 25문항

rpm의 의존성 문제를 해결하려고 만든 온라인 도구입니다.

명령동작
yum install 패키지의존성까지 챙겨서 설치
yum groupinstall 그룹패키지 그룹 설치
yum update 패키지업데이트
yum remove 패키지삭제
yum info 패키지정보 출력 (설치 안 된 것도 조회 가능)
yum list전체 패키지 목록
yum search 문자열문자열이 포함된 패키지 검색
yum check-update업데이트 가능한 목록 확인
yum clean캐시 삭제
yum history list작업 이력 확인

5-4. dpkg · apt-get자주 출제 16문항

dpkg — 데비안의 저수준 도구. .deb 파일을 다룹니다. 온라인 기능 없음

옵션동작
-i설치
-r패키지만 삭제 (설정 파일은 남김)
-P / --purge설정 파일까지 모두 삭제
-s패키지 상태·정보 출력
-L설치한 파일 목록 출력

apt-get — 의존성을 자동 해결하는 온라인 도구. 저장소 목록은 /etc/apt/sources.list

  • apt-get install 패키지 · apt-get remove 패키지
  • apt-get purge 패키지 — 설정 파일까지 삭제

5-5. tar와 압축

tar는 여러 파일을 하나로 묶는 도구입니다. 압축은 별개 옵션으로 붙습니다.

옵션동작
c묶기 (create)
x풀기 (extract)
t안에 든 목록만 보기 (list)
f파일명 지정 (거의 항상 붙음)
v진행 과정 출력
r기존 tar에 파일 추가
C지정한 디렉터리로 이동해서 작업
zgzip (.tar.gz)
jbzip2 (.tar.bz2)
Jxz (.tar.xz)
Zcompress (.tar.Z)

예: tar cvf source.tar *.c · tar zxvf home.tgz · tar jtvf a.tar.bz2(bz2 목록만 확인)

bash
root@linux-master:~# tar cvf source.tar *.c  # C 파일만 묶기
main.c
util.c
root@linux-master:~# tar tvf source.tar  # 안에 든 목록만 확인
-rw-rw-r-- ihd/ihd  1024 2026-08-03 09:20 main.c
root@linux-master:~# tar zxvf php-8.0.3.tar.gz  # gzip 압축 풀기
root@linux-master:~# tar jtvf backup.tar.bz2  # bzip2 파일 목록만 보기
root@linux-master:~# tar rvf source.tar new.c  # 기존 tar에 파일 추가

압축 명령 짝

압축해제확장자
compressuncompress.Z
gzipgunzip.gz
bzip2bunzip2.bz2
xzunxz.xz

압축률 순서: compress < gzip < bzip2 < xz (xz가 가장 많이 줄어듦)

5-6. 소스 코드 컴파일 설치

순서를 그대로 외우세요.

$ ./configure  # 환경 검사 + Makefile 생성 (설치 경로 등 옵션 지정)
$ make         # Makefile을 읽어 소스 컴파일
$ make install # 컴파일 결과물을 시스템에 설치
  • make clean — 이전에 만든 설정·중간 파일을 지우고 다시 시작할 때
  • CMake (Cross Platform Make) — make의 대체품. 윈도우 포함 멀티 플랫폼 지원. MySQL·KDE·LMMS가 사용
  • configure/make를 쓰는 예: PHP, Apache HTTP, Nmap
guest@linux-master:~/ch06$ cat chapter-6.md

🖨️ 장치 설정

6-1. 프린터 — 인쇄 시스템자주 출제 15문항

시스템설명
LPRng리눅스 초기의 인쇄 시스템. BSD 계열 유닉스용, 버클리 프린팅 시스템. 설정 파일 /etc/printcap
CUPS애플이 개발한 오픈소스 프린팅 시스템. 설정 디렉터리 /etc/cups, 웹 기반 관리(631 포트), 어도비 PPD 형식 드라이버, 설정 명령 lpadmin
IPP인터넷을 통해 원격 인쇄할 때 쓰는 프로토콜. CUPS가 이 위에서 동작

6-2. 프린터 명령어 — BSD vs System V

기능BSD 계열System V 계열
출력 요청lpr (-# 매수)lp (-n 매수)
큐 상태·목록 확인lpqlpstat
작업 취소lprmcancel
프린터 제어lpc (라인 프린터 컨트롤)

⚠️ 두 계열을 섞어서 보기로 내는 문제가 단골입니다. lpr·lpq·lprm·lpc = BSD, lp·lpstat·cancel = System V.

로컬 프린터 장치 파일 — 병렬 포트 /dev/lp0, USB /dev/usb/lp0

설정 도구 — CentOS 7에서 X 윈도 기반 프린터 설정은 system-config-printer입니다. 예전 레드햇에서 쓰던 printtool·printconf·redhat-config-printer는 지금은 쓰지 않습니다.

6-3. 사운드 카드자주 출제 17문항

이름설명
OSS (Open Sound System)사운드를 만들고 캡처하는 인터페이스. 표준 유닉스 시스템 콜(POSIX) 기반. 초기엔 자유 소프트웨어였다가 사유화됨
ALSA (Advanced Linux Sound Architecture)사운드 카드용 장치 드라이버를 제공하는 리눅스 커널 요소. 사운드 카드를 자동 구성. OSS 사유화 후 표준이 됨

관련 명령alsactl(제어), alsamixer(믹서), cdparanoia(오디오 CD 추출)

6-4. 스캐너자주 출제 15문항

이름설명
SANE (Scanner Access Now Easy)스캐너·카메라 하드웨어에 표준화된 접근을 제공하는 API
XSANESANE을 이용한 X 윈도 기반 스캐너 프로그램. GTK+ 라이브러리로 개발, 이미지 수정 가능. 실행 명령 xsane

관련 명령

  • sane-find-scanner — SCSI·USB 스캐너 검색
  • scanimage — 이미지 스캔
  • scanadf — 여러 장 연속 스캔
  • xcam — GUI 기반 스캔

6-5. 커널 모듈과 네트워크 설정 파일

  • lsmod — 커널에 올라간 모듈 목록 확인
  • modprobe — 커널 모듈 추가·제거
  • /etc/sysconfig/network-scripts/ifcfg-eth0 — 네트워크 인터페이스 설정 파일
  • system-config-network — GUI 네트워크 설정 도구
  • CentOS 7부터 이더넷 장치명이 eth0이 아닌 enp0s3 형식으로 바뀌었습니다.
guest@linux-master:~/ch07$ cat chapter-7.md

🪟 X 윈도

7-1. X 윈도의 구조자주 출제 21문항

  • X 윈도는 네트워크 프로토콜 기반의 클라이언트–서버 시스템입니다.
  • X 서버 = 화면 출력과 입력 장치를 담당하는 쪽 (내 앞의 모니터·키보드)
  • X 클라이언트 = 실제 프로그램 (원격 서버에서 돌아도 됨)
  • 둘이 독립적이라 원격지의 프로그램을 내 화면에 띄울 수 있습니다.
  • 할당된 TCP 포트는 6000번대(6000 + 디스플레이 번호)

구성 요소

이름설명
XProtocol서버와 클라이언트 사이의 통신 규약
XlibC 언어용 X 라이브러리
XCBXlib을 대체하려고 등장. 스레드 지원·확장성 우수
Xtoolkit상위 인터페이스 툴킷
XFree86 / XF86Configx86용 X 서버 구현체와 설정 파일

7-2. 윈도 매니저 · 데스크톱 환경 · 디스플레이 매니저자주 출제 24문항

구분역할종류
윈도 매니저창의 배치와 표현 (열기·닫기·최소화·크기 조정)Mutter, Metacity, Kwin, Window Maker, TWM, FVWM
데스크톱 환경윈도 매니저 + 파일 관리자 + 제어판 등 통합 환경KDE, GNOME, LXDE, XFCE
디스플레이 매니저로그인 화면과 세션 관리XDM, GDM, KDM, dtlogin

데스크톱 환경별 특징

  • KDEQt 라이브러리, 윈도 매니저 Kwin, 디스플레이 매니저 KDM
  • GNOMEGTK+ 라이브러리(LGPL), 윈도 매니저 Metacity(2.x) → Mutter(3.x), 디스플레이 매니저 GDM, 파일 관리자 nautilus
  • XFCE — 가벼운 환경. 자체 윈도 매니저 xfwm
  • KDE Plasma — KDE의 최신 데스크톱 셸 이름. 그놈에는 전통 방식으로 꾸민 그놈 클래식이 있습니다

7-3. DISPLAY 환경 변수와 원격 실행

bash
root@linux-master:~# xhost +192.168.0.20  # X 서버에서 그 주소의 접근 허용
192.168.0.20 being added to access control list
root@linux-master:~# export DISPLAY="192.168.0.10:0.0"  # X 클라이언트에서 출력 위치 지정
root@linux-master:~# xauth list $DISPLAY  # 인증 쿠키 확인
www/unix:0  MIT-MAGIC-COOKIE-1  9f2c1b...

원격지의 X 클라이언트를 내 X 서버에 띄우려면 두 가지가 필요합니다.

  1. X 서버 쪽에서 접근을 허가 → xhost
  2. X 클라이언트 쪽에서 출력할 위치를 지정 → DISPLAY 환경 변수

xhost — IP 기반 접근 제어

  • xhost +192.168.0.10 — 해당 주소 허용
  • xhost -192.168.0.10 — 해당 주소 차단
  • xhost + — 모두 허용 · xhost - — 명시적으로 허용한 곳 외 모두 차단

xauthMIT-MAGIC-COOKIE 방식의 사용자 인증. 키는 ~/.Xauthority에 저장

  • xauth list $DISPLAY — 해당 디스플레이의 쿠키(권한 부여 정보) 확인

⚠️ xhost는 IP 기반, xauth는 사용자(쿠키) 기반이라는 대비가 자주 나옵니다.

7-4. 부팅 모드 설정

모드명령
텍스트(CLI)로 부팅systemctl set-default multi-user.target (= runlevel3)
그래픽(X 윈도)으로 부팅systemctl set-default graphical.target (= runlevel5)
현재 설정 확인systemctl get-default
  • 예전 방식에서는 /etc/inittab으로 부팅 모드를 설정했습니다.
  • X 윈도 실행은 startx, 강제 종료는 Ctrl+Alt+Backspace
  • xrandr — 터미널에서 해상도 변경
  • xset — 키보드 반복 속도, 화면 보호기, 소리 같은 X 서버 환경 설정

7-5. X 윈도 응용 프로그램자주 출제 24문항

분야프로그램
이미지 뷰어eog (Eye of GNOME), gThumb, gwenview
이미지 편집GIMP (본격 편집), ImageMagick (변환·크기 조정), kolourpaint
동영상·사운드Totem, Rhythmbox, Cheese
문서LibreOffice Writer(워드) · Calc(스프레드시트) · Impress(프레젠테이션) · Draw(드로잉)
PDF 뷰어Evince
메일Evolution
파일 관리자nautilus(GNOME), konqueror(KDE)
편집기gedit, kwrite
기타KSnapshot(스크린샷), Eclipse(개발)

웹 브라우저

  • GUI — 크롬(구글), 파이어폭스(모질라 재단, 게코 엔진), 오페라(노르웨이), 사파리
  • 텍스트 기반lynx, links → X 윈도가 없는 콘솔에서도 사용 가능
guest@linux-master:~/ch08$ cat chapter-8.md

🌐 인터넷 활용

8-1. OSI 7계층🔥 빈출 34문항

계층역할전송 단위장비
7 응용사용자와 직접 상호작용메시지/데이터게이트웨이
6 표현부호화, 압축, 암호화메시지/데이터
5 세션연결 설정·유지·해제, 동기화메시지/데이터
4 전송종단 간(end-to-end) 연결, 흐름·오류 제어세그먼트(TCP) / 데이터그램(UDP)게이트웨이, 프록시
3 네트워크논리 주소, 경로 선택(라우팅), 혼잡 제어패킷라우터
2 데이터링크오류 검출, 흐름 제어, 동기화프레임브리지, 스위치
1 물리전기적·기계적 특성으로 전송비트리피터, 허브, 케이블

계층별 프로토콜

  • 네트워크 — IP, ICMP, IGMP, ARP, RARP
  • 전송 — TCP, UDP, SSL
  • 응용 — HTTP, FTP, TFTP, Telnet, SSH, DHCP, DNS, POP3, IMAP, SNMP

ARP는 IP → MAC, RARP는 MAC → IP 입니다.

프로토콜의 3요소 — 구문(Syntax) · 의미(Semantics) · 순서(Timing)

8-2. 포트 번호🔥 빈출 28문항

포트서비스
20 / 21FTP (데이터 / 제어)
22SSH
23Telnet
25SMTP (메일 송신)
53DNS
67 / 68DHCP
69TFTP
80HTTP
110POP3 (메일 수신)
143IMAP
161 / 162SNMP
443HTTPS
  • /etc/services — 서비스 이름과 포트 번호 매핑
  • /etc/protocols프로토콜 번호 (포트 번호가 아닙니다!)

8-3. IP 주소와 서브넷자주 출제 20문항

클래스첫 비트범위기본 서브넷 마스크
A00.0.0.0 ~ 127.255.255.255255.0.0.0 (/8)
B10128.0.0.0 ~ 191.255.255.255255.255.0.0 (/16)
C110192.0.0.0 ~ 223.255.255.255255.255.255.0 (/24)
D1110224.0.0.0 ~ 239.255.255.255멀티캐스트용
E1111240.0.0.0 ~연구용

사설 IP 대역

  • A — 10.0.0.0 ~ 10.255.255.255
  • B — 172.16.0.0 ~ 172.31.255.255
  • C — 192.168.0.0 ~ 192.168.255.255

루프백 주소 127.0.0.1A 클래스입니다. 0.0.0.0은 디폴트 경로, 255.255.255.255는 브로드캐스트.

서브네팅 계산법 — C 클래스에서 마스크가 255.255.255.192인 경우

  • 256 − 192 = 64 → 한 서브넷의 크기
  • 256 ÷ 64 = 4개의 서브넷
  • 서브넷당 사용 가능한 호스트 = 64 − 2 = 62개 (네트워크 주소·브로드캐스트 제외)

비트 수 — IPv4 32비트, IPv6 128비트, MAC 주소 48비트

IPv6 특징 — 주소 공간 확장, 클래스 구분 없음, 패킷 출처 인증·비밀 보장, 흐름 제어 지원

8-4. 네트워크 명령어🔥 빈출 27문항

명령용도
ifconfig인터페이스 정보 확인, IP 설정, 활성화/비활성화
ifconfig eth0 192.168.0.5 netmask 255.255.255.0 up
ipifconfig·route를 대체하는 통합 명령. ip addr add로 주소 지정
ping연결 상태 확인 (ICMP 기반)
traceroute목적지까지 경로 추적
route라우팅 테이블·게이트웨이 확인
netstat네트워크 연결 상태, 포트, 라우팅 정보
ss소켓 통계. netstat의 대체 (-n 숫자, -a 전체, -t TCP)
arp로컬 네트워크 호스트의 MAC 주소 확인 (-a 캐시 조회)
nslookup, digDNS 질의
ethtool이더넷 카드 설정 조회·변경, 물리적 연결 확인
mii-tool케이블이 물리적으로 연결됐는지 점검
bash
root@linux-master:~# ifconfig eth0  # 인터페이스 정보
eth0: flags=4163  mtu 1500
        inet 192.168.0.5  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 08:00:27:1a:2b:3c  txqueuelen 1000  (Ethernet)
root@linux-master:~# route  # 게이트웨이 확인
Destination     Gateway         Genmask         Flags Iface
default         192.168.0.1     0.0.0.0         UG    eth0
root@linux-master:~# netstat -an | grep :22  # 포트 상태 확인
tcp   0   0 0.0.0.0:22    0.0.0.0:*    LISTEN
root@linux-master:~# arp -a  # 같은 망의 MAC 주소
gateway (192.168.0.1) at 00:11:22:33:44:55 [ether] on eth0

netstat의 상태(state) 값

  • LISTEN — 접속 요청을 기다리는 중
  • SYN-SENT — 연결을 요청한 상태
  • SYN_RECEIVED — 요청을 받아 응답했으나 아직 확인 전
  • ESTABLISHED — 3-way handshake 완료, 연결됨

8-5. 네트워크 설정 파일

파일내용
/etc/hostsIP와 도메인을 1:1로 매핑. DNS에 묻기 전에 먼저 찾아봄
/etc/resolv.conf네임서버(DNS) 주소와 검색 도메인 지정
/etc/services서비스명 ↔ 포트 번호
/etc/protocols프로토콜 번호
/etc/sysconfig/network-scripts/ifcfg-eth0인터페이스별 IP 설정

⚠️ IP ↔ 도메인이면 /etc/hosts, 네임서버 주소면 /etc/resolv.conf로 갈라서 외우세요.

8-6. 원격 접속과 파일 공유자주 출제 21문항

서비스설명
telnet평문 전송이라 보안에 취약. telnet -l 계정 서버IP
ssh암호화로 보안 강화. ssh -p 180 192.168.1.1, ssh -l 아이디 IP 또는 ssh 아이디@IP
인증 키 경로 ~/.ssh/authorized_keys
NFS리눅스·유닉스 끼리 파일 공유
SAMBA리눅스 ↔ 윈도우 파일·프린터 공유. SMB → 최근 CIFS 프로토콜
scpSSH 위에서 파일을 복사. scp 파일 계정@호스트:경로
sftpSSH 기반의 안전한 파일 전송. 이름이 비슷한 sccp는 SSH와 무관합니다
NIS네트워크 정보를 중앙에서 관리·배포

telnet 접속 시 나오는 메시지 파일

  • /etc/issue로컬(콘솔) 접속 시 로그인
  • /etc/issue.net원격(telnet) 접속 시 로그인
  • /etc/motd — 접속 방식과 관계없이 로그인

FTP 안에서 쓰는 명령

  • get 서버 → 내 컴퓨터로 내려받기 · put 내 컴퓨터 → 서버로 올리기
  • mget·mput 여러 개 한꺼번에 · hash 진행 상태를 # 기호로 표시 · bi 바이너리 모드

포트 번호 구간0~1023 잘 알려진 포트(well-known), 1024~49151 등록 포트, 49152~65535 동적 포트

8-7. 인터넷 서비스와 국제 기구🔥 빈출 39문항

메일 프로토콜

  • SMTP — 송신, 서버 간 메시지 교환 (25)
  • POP3(110) · IMAP4(143) — 수신
  • MIME — 멀티미디어 메일 표준, SMTP의 확장 규격

기타 서비스

  • Gopher — 인터넷 초기의 텍스트 메뉴 기반 정보 검색
  • Usenet / Newsgroup — 공개 공간에서 글을 주고받는 분산 토론 서비스
  • IRC — 실시간 채팅 프로토콜

국제 기구

기구하는 일
ICANNIP 주소·도메인 관리 (그 전에는 IANA가 담당)
ISO국제 표준화 기구. OSI 7계층 제정
IEEE전기·전자 전문가 단체. LAN/MAN 표준
802.3 이더넷 · 802.4 토큰버스 · 802.5 토큰링 · 802.6 MAN(DQDB)
ITU-T통신 분야 표준 (구 CCITT)
EIA / TIA케이블(T568B) 및 통신 장비 표준
ANSI미국 국가표준협회. 미국 내 표준을 제정하고 ISO에 미국 대표로 참여

LAN 케이블 규격

규격대역폭속도
CAT-5100MHz100Mbps
CAT-5E100MHz1Gbps
CAT-6250MHz1Gbps
CAT-7600MHz10Gbps

LAN 종류 — Ethernet, Token Ring, FDDI · 통신망 — LAN, MAN, WAN, SAN

매체 접근 방식

  • CSMA/CD — 유선 이더넷. 보내면서 충돌을 감지(Detection)하고 재전송
  • CSMA/CA — 무선 랜(Wi-Fi). 애초에 충돌을 피하도록(Avoidance) 대기 후 전송

교환 방식 — 패킷 교환(X.25, 프레임 릴레이, ATM) / 회선 교환(HDLC, PPP)

guest@linux-master:~/ch09$ cat chapter-9.md

🚀 응용분야

9-1. 클러스터

종류목적
HA (High Availability, 고가용성)지속적인 서비스. 백업 노드가 주 노드를 감시하다가 문제가 생기면 이어받음
HPC (High Performance Computing, 고계산용)높은 연산 능력. 여러 대를 병렬로 묶어 슈퍼컴퓨터 제작 (베어울프 클러스터)
LVS (Linux Virtual Server, 부하 분산)트래픽을 여러 서버로 분산. 대규모 서비스용

9-2. 가상화

하이퍼바이저방식비고
XEN반가상화 + 전가상화케임브리지 대학에서 시작, 2003년 첫 공개
KVM전가상화Qumranet 개발. x86 기반, QEMU로 CPU 에뮬레이션, 인텔 VT·AMD-V 활용
VirtualBox전가상화이노테크 → 현재 오라클. 기본 확장자 .vdi
VMware전가상화x86 가상화 소프트웨어 회사. 가상 디스크 확장자 .vmdk
Hyper-V전가상화마이크로소프트의 윈도 서버용 기술 — 리눅스 가상화 기술을 고르는 문제에서 답이 아님

통합 관리 플랫폼 — OpenStack, CloudStack, OpenNebula

⚠️ XEN = 반가상화, KVM = 전가상화로 짝지어 외우세요.

9-3. 컨테이너와 관리 도구

가상 머신은 게스트 OS를 통째로 올리지만, 컨테이너는 호스트 커널을 공유해서 훨씬 가볍습니다.

이름하는 일
Docker애플리케이션과 실행 환경을 이미지로 묶어 컨테이너로 실행. 게스트 OS가 없어 가볍고 빠름
LXC리눅스 커널 기능을 이용한 컨테이너 기술. 도커보다 시스템 컨테이너에 가까움
Kubernetes여러 서버에 흩어진 컨테이너를 배치·확장·복구까지 자동 관리하는 오케스트레이션 도구
Ansible서버 설정과 배포를 플레이북으로 자동화. 에이전트를 깔지 않고 SSH로 접속해 작업
OpenStack여러 하이퍼바이저를 묶어 IaaS 클라우드를 구축하는 오픈소스 플랫폼. CloudStack·OpenNebula도 같은 부류

⚠️ Docker = 컨테이너를 만드는 것, Kubernetes = 만든 컨테이너를 운영하는 것으로 갈라서 외우세요.

9-4. 클라우드 서비스

모델빌려주는 것
IaaS (Infrastructure)서버·스토리지 같은 하드웨어 자원
PaaS (Platform)개발용 플랫폼
SaaS (Software)완성된 응용 프로그램. 설치 필요 없음
DaaS (Desktop)가상 데스크톱
FaaS (Function)이벤트가 생기면 실행되고 끝나면 종료되는 기능 단위

이용자가 직접 설정할 부분이 많은 순서: IaaS > PaaS > SaaS (알파벳 I·P·S 순으로 기억)

9-5. 모바일·임베디드 · 빅데이터

이름설명
안드로이드구글의 리눅스 기반 모바일 플랫폼
타이젠인텔·삼성 주축, 리눅스 재단. MeeGo 개발자 참여
모블린인텔 + 리눅스 재단. 넷북 등 임베디드용
마에모노키아의 스마트폰·태블릿용 플랫폼
QNX1982년 개발된 유닉스 계열 실시간 OS
iOS애플 전용 운영체제
GENIVI오픈소스 기반 차량 멀티미디어 플랫폼 표준화

빅데이터·분석

  • Hadoop — 대규모 데이터를 분산 저장·처리하는 프레임워크
  • Cassandra — 2008년 아파치 오픈소스로 공개된 분산 데이터베이스
  • R — 데이터 분석·시각화용 프로그래밍 언어

임베디드 리눅스는 기존 RTOS보다 더 많은 메모리를 요구합니다.