🔐 파일 시스템 관련 명령어
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 ihdchgrp -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— 그룹 권한을 읽기만으로 설정
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
| 특수 권한 | 숫자 | 기호 | 의미 |
|---|---|---|---|
| SetUID | 4000 | s (소유자 자리) | 실행하는 동안 파일 소유자의 권한으로 동작 |
| SetGID | 2000 | s (그룹 자리) | 실행하는 동안 파일 그룹의 권한으로 동작. 디렉터리에 걸면 그 안에 생기는 파일의 그룹이 디렉터리 그룹으로 지정됨 |
| Sticky Bit | 1000 | t (기타 자리) | 누구나 파일을 만들 수 있지만 삭제는 소유자와 root만. 공용 디렉터리용 |
- 실행 권한(x)이 있는 파일에 걸면 소문자
s/t, 없는 파일에 걸면 대문자S/T로 표시됩니다. - 대표 예시 —
/usr/bin/passwd에는 SetUID가 걸려 있습니다. 일반 사용자가 자기 비밀번호를 바꾸려면 root 소유인/etc/shadow를 고쳐야 하기 때문입니다. - 대표 예시 —
/tmp에는 Sticky Bit가 걸려 있습니다. 누구나 임시 파일을 만들되 남의 파일은 못 지우게 하려고요.
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, 디렉터리 755umask -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로 유형 지정 |
mke2fs | ext2/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
| 구분 | du | df |
|---|---|---|
| 보는 것 | 디렉터리별 사용량 (얼마나 쓰고 있나) | 파티션별 남은 용량 (얼마나 남았나) |
| 주요 옵션 | -s 합계만 · -h 읽기 쉬운 단위 | -T 파일 시스템 유형 · -h 단위 · -a 0블록 포함 전부 |
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— 블록 장치를 트리 형태로 표시
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, 저널링 없음 |
| ext3 | ext2 확장 + 저널링 + ACL |
| ext4 | ext3의 확장. 대용량 지원 |
| XFS · JFS · ReiserFS | 대표적인 저널링 파일 시스템 (JFS는 IBM 개발) |
| NFS | 네트워크 파일 시스템 — 리눅스·유닉스끼리 공유 |
| CIFS | SMB의 확장 — 윈도우와 공유 |
| NTFS | 윈도우 파일 시스템 |
| ISO9660 · UDF | CD / 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 / LE | PV / LV를 나눈 블록 단위 (기본 4MB, 서로 1:1 대응) |
구성 순서: PV → VG → LV
🐚 Shell
2-1. 셸의 종류와 계열🔥 빈출 34문항
| 계열 | 셸 | 경로 | 만든 사람 · 특징 |
|---|---|---|---|
| 본 셸 계열 | 본 셸(sh) | /bin/sh | 스티븐 본 (벨 연구소). 최초의 표준 셸 |
| 콘 셸(ksh) | /bin/ksh | 데이비드 콘 (AT&T). 본 셸 확장 | |
| 배시 셸(bash) | /bin/bash | GNU 프로젝트. 리눅스 표준 셸, 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)
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 | 명령이 다음 줄로 이어질 때 나오는 보조 프롬프트 |
PROMPT | C 셸에서 프롬프트를 지정하는 변수 (bash의 PS1에 해당) |
HISTSIZE | 히스토리 스택 크기 |
HISTFILE | 히스토리 파일 위치 |
HISTFILESIZE | 히스토리 파일의 물리적 크기 |
DISPLAY | X 화면이 출력될 위치 |
PS1 치환 문자
\u사용자명 ·\h호스트명 ·\s셸 이름\w현재 디렉터리 절대 경로 ·\W마지막 디렉터리만\t24시 시간 ·\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번째 이전 명령 실행 |
!문자열 | 그 문자열로 시작하는 가장 최근 명령 실행 |
!?문자열? | 그 문자열을 포함하는 가장 최근 명령 실행 |
!$ | 직전 명령의 마지막 인자 |
!* | 직전 명령의 모든 인자 |
⚙️ 프로세스 관리
3-1. 프로세스 생성 방식 — fork와 exec자주 출제 24문항
| 구분 | fork() | exec() |
|---|---|---|
| 방식 | 기존 프로세스를 복제 | 기존 프로세스를 새 프로세스로 덮어씀 |
| 메모리 | 새로 할당함 | 새로 할당하지 않음 |
| 결과 | 부모–자식 관계가 생김 | 원래 프로세스는 사라짐 |
사용자가 로그인하면 bash를 받고, 명령을 입력하면 fork로 자식 프로세스가 생겨 실행됩니다.
최초 프로세스 — CentOS 6까지는 init, CentOS 7부터는 systemd이며 PID는 1입니다.
3-2. 데몬 — standalone vs inetd자주 출제 17문항
| 구분 | standalone | inetd (슈퍼 데몬) |
|---|---|---|
| 동작 | 부팅 때 떠서 메모리에 계속 상주 | 평소엔 자고 있다가 요청이 오면 해당 서비스를 깨움 |
| 장점 | 응답이 빠름 | 메모리를 아낌 |
| 적합 | 요청이 빈번한 서비스 | 가끔 쓰는 서비스 |
| 예 | httpd, mysql, sendmail, named | telnet, FTP, POP3, finger, rlogin |
보안상의 이유로 커널 2.4부터는 inetd 대신 xinetd가 그 역할을 합니다.
3-3. 시그널
| 번호 | 이름 | 의미 |
|---|---|---|
| 1 | SIGHUP | 터미널 연결이 끊겼을 때. 데몬 재시작에도 사용 |
| 2 | SIGINT | Ctrl+C — 실행 중인 포그라운드 작업 종료 |
| 3 | SIGQUIT | Ctrl+\ — 코어 덤프하며 종료 |
| 9 | SIGKILL | 강제 종료 (무시할 수 없음) |
| 15 | SIGTERM | kill 명령의 기본 시그널. 가능하면 정상 종료 |
| 18 | SIGCONT | 중지된 프로세스를 다시 실행 |
| 19 | SIGSTOP | SIGCONT를 받을 때까지 중지 |
| 20 | SIGTSTP | Ctrl+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 | 좀비 — 종료됐지만 부모가 회수하지 않아 메모리를 차지 |
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— 프로세스를 트리 구조로.-pPID 표시,-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 &
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
kill은 PID를 사용,killall은 프로세스 이름을 사용합니다.kill -l— 시그널 종류 나열kill -9 PID— 강제 종료kill %2— 작업 번호 2번인 백그라운드 작업 종료 (%가 붙으면 작업 번호)- 옵션 없이
kill PID를 쓰면 기본 시그널 15(SIGTERM)가 전달됩니다.
3-7. 우선순위 — nice · renice자주 출제 19문항
| 구분 | nice | renice |
|---|---|---|
| 대상 | 앞으로 실행할 프로세스 이름 | 이미 실행 중인 PID |
| 계산 | 기존 NI 값에 더함 | 기존 값과 무관하게 그 값으로 설정 |
| 예 | nice -10 bash | renice 1 1222 |
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초 간격으로 감시
실행 중 단축키
| 키 | 동작 |
|---|---|
| k | PID를 입력해 종료 신호 전송 (kill) |
| r | NI 값 조정 (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에는 필드 사이에 실행할 사용자명이 하나 더 들어갑니다.
📝 에디터
4-1. 에디터 한눈에 비교🔥 빈출 53문항
| 에디터 | 만든 사람 | 특징 |
|---|---|---|
| pico | 아보일 카사르 | 메모장과 비슷. 자유 소프트웨어 라이선스가 아님 |
| nano | GNU 프로젝트 | pico의 복제판. 사용법 동일 |
| vi | 빌 조이 | BSD에 포함되어 배포. 모드형 편집기, 가장 많이 쓰임 |
| vim | 브람 무레나르 | vi 개선판. 색상 강조로 가시성 향상 |
| emacs | 리처드 스톨만 | LISP 기반, 비모드형. 제임스 고슬링이 기능 확장 |
| gedit | — | 그놈 데스크톱용, GTK+ 기반. 콘솔에서는 못 씀 |
| kwrite | — | KDE 환경용 편집기 |
- 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 파일명은 비정상 종료로 손상된 파일을 복구합니다.
📦 소프트웨어 설치
5-1. 배포판별 패키지 관리 도구자주 출제 15문항
| 배포판 | 오프라인(로컬) | 온라인(의존성 해결) |
|---|---|---|
| 레드햇 · CentOS | rpm | yum |
| 페도라 | rpm | dnf (yum의 개선판, 페도라 22부터) |
| 데비안 | dpkg | apt-get |
| 우분투 | dpkg | apt-get, aptitude |
| 수세 | YaST | zypper |
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특정 파일을 설치한 패키지명
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 | 지정한 디렉터리로 이동해서 작업 |
z | gzip (.tar.gz) |
j | bzip2 (.tar.bz2) |
J | xz (.tar.xz) |
Z | compress (.tar.Z) |
예: tar cvf source.tar *.c · tar zxvf home.tgz · tar jtvf a.tar.bz2(bz2 목록만 확인)
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에 파일 추가
압축 명령 짝
| 압축 | 해제 | 확장자 |
|---|---|---|
| compress | uncompress | .Z |
| gzip | gunzip | .gz |
| bzip2 | bunzip2 | .bz2 |
| xz | unxz | .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
🖨️ 장치 설정
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 매수) |
| 큐 상태·목록 확인 | lpq | lpstat |
| 작업 취소 | lprm | cancel |
| 프린터 제어 | 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 |
| XSANE | SANE을 이용한 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형식으로 바뀌었습니다.
🪟 X 윈도
7-1. X 윈도의 구조자주 출제 21문항
- X 윈도는 네트워크 프로토콜 기반의 클라이언트–서버 시스템입니다.
- X 서버 = 화면 출력과 입력 장치를 담당하는 쪽 (내 앞의 모니터·키보드)
- X 클라이언트 = 실제 프로그램 (원격 서버에서 돌아도 됨)
- 둘이 독립적이라 원격지의 프로그램을 내 화면에 띄울 수 있습니다.
- 할당된 TCP 포트는 6000번대(6000 + 디스플레이 번호)
구성 요소
| 이름 | 설명 |
|---|---|
| XProtocol | 서버와 클라이언트 사이의 통신 규약 |
| Xlib | C 언어용 X 라이브러리 |
| XCB | Xlib을 대체하려고 등장. 스레드 지원·확장성 우수 |
| Xtoolkit | 상위 인터페이스 툴킷 |
| XFree86 / XF86Config | x86용 X 서버 구현체와 설정 파일 |
7-2. 윈도 매니저 · 데스크톱 환경 · 디스플레이 매니저자주 출제 24문항
| 구분 | 역할 | 종류 |
|---|---|---|
| 윈도 매니저 | 창의 배치와 표현 (열기·닫기·최소화·크기 조정) | Mutter, Metacity, Kwin, Window Maker, TWM, FVWM |
| 데스크톱 환경 | 윈도 매니저 + 파일 관리자 + 제어판 등 통합 환경 | KDE, GNOME, LXDE, XFCE |
| 디스플레이 매니저 | 로그인 화면과 세션 관리 | XDM, GDM, KDM, dtlogin |
데스크톱 환경별 특징
- KDE — Qt 라이브러리, 윈도 매니저 Kwin, 디스플레이 매니저 KDM
- GNOME — GTK+ 라이브러리(LGPL), 윈도 매니저 Metacity(2.x) → Mutter(3.x), 디스플레이 매니저 GDM, 파일 관리자 nautilus
- XFCE — 가벼운 환경. 자체 윈도 매니저 xfwm
- KDE Plasma — KDE의 최신 데스크톱 셸 이름. 그놈에는 전통 방식으로 꾸민 그놈 클래식이 있습니다
7-3. DISPLAY 환경 변수와 원격 실행
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 서버에 띄우려면 두 가지가 필요합니다.
- X 서버 쪽에서 접근을 허가 →
xhost - X 클라이언트 쪽에서 출력할 위치를 지정 →
DISPLAY환경 변수
xhost — IP 기반 접근 제어
xhost +192.168.0.10— 해당 주소 허용xhost -192.168.0.10— 해당 주소 차단xhost +— 모두 허용 ·xhost -— 명시적으로 허용한 곳 외 모두 차단
xauth — MIT-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 윈도가 없는 콘솔에서도 사용 가능
🌐 인터넷 활용
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 / 21 | FTP (데이터 / 제어) |
| 22 | SSH |
| 23 | Telnet |
| 25 | SMTP (메일 송신) |
| 53 | DNS |
| 67 / 68 | DHCP |
| 69 | TFTP |
| 80 | HTTP |
| 110 | POP3 (메일 수신) |
| 143 | IMAP |
| 161 / 162 | SNMP |
| 443 | HTTPS |
/etc/services— 서비스 이름과 포트 번호 매핑/etc/protocols— 프로토콜 번호 (포트 번호가 아닙니다!)
8-3. IP 주소와 서브넷자주 출제 20문항
| 클래스 | 첫 비트 | 범위 | 기본 서브넷 마스크 |
|---|---|---|---|
| A | 0 | 0.0.0.0 ~ 127.255.255.255 | 255.0.0.0 (/8) |
| B | 10 | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 (/16) |
| C | 110 | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 (/24) |
| D | 1110 | 224.0.0.0 ~ 239.255.255.255 | 멀티캐스트용 |
| E | 1111 | 240.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.1은 A 클래스입니다. 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 |
ip | ifconfig·route를 대체하는 통합 명령. ip addr add로 주소 지정 |
ping | 연결 상태 확인 (ICMP 기반) |
traceroute | 목적지까지 경로 추적 |
route | 라우팅 테이블·게이트웨이 확인 |
netstat | 네트워크 연결 상태, 포트, 라우팅 정보 |
ss | 소켓 통계. netstat의 대체 (-n 숫자, -a 전체, -t TCP) |
arp | 로컬 네트워크 호스트의 MAC 주소 확인 (-a 캐시 조회) |
nslookup, dig | DNS 질의 |
ethtool | 이더넷 카드 설정 조회·변경, 물리적 연결 확인 |
mii-tool | 케이블이 물리적으로 연결됐는지 점검 |
root@linux-master:~# ifconfig eth0 # 인터페이스 정보 eth0: flags=4163mtu 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/hosts | IP와 도메인을 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 프로토콜 |
| scp | SSH 위에서 파일을 복사. scp 파일 계정@호스트:경로 |
| sftp | SSH 기반의 안전한 파일 전송. 이름이 비슷한 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 — 실시간 채팅 프로토콜
국제 기구
| 기구 | 하는 일 |
|---|---|
| ICANN | IP 주소·도메인 관리 (그 전에는 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-5 | 100MHz | 100Mbps |
| CAT-5E | 100MHz | 1Gbps |
| CAT-6 | 250MHz | 1Gbps |
| CAT-7 | 600MHz | 10Gbps |
LAN 종류 — Ethernet, Token Ring, FDDI · 통신망 — LAN, MAN, WAN, SAN
매체 접근 방식
- CSMA/CD — 유선 이더넷. 보내면서 충돌을 감지(Detection)하고 재전송
- CSMA/CA — 무선 랜(Wi-Fi). 애초에 충돌을 피하도록(Avoidance) 대기 후 전송
교환 방식 — 패킷 교환(X.25, 프레임 릴레이, ATM) / 회선 교환(HDLC, PPP)
🚀 응용분야
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 개발자 참여 |
| 모블린 | 인텔 + 리눅스 재단. 넷북 등 임베디드용 |
| 마에모 | 노키아의 스마트폰·태블릿용 플랫폼 |
| QNX | 1982년 개발된 유닉스 계열 실시간 OS |
| iOS | 애플 전용 운영체제 |
| GENIVI | 오픈소스 기반 차량 멀티미디어 플랫폼 표준화 |
빅데이터·분석
- Hadoop — 대규모 데이터를 분산 저장·처리하는 프레임워크
- Cassandra — 2008년 아파치 오픈소스로 공개된 분산 데이터베이스
- R — 데이터 분석·시각화용 프로그래밍 언어
임베디드 리눅스는 기존 RTOS보다 더 많은 메모리를 요구합니다.