🔥복습 및 문제 재풀이 check
| 2026년 6월1일(1차) | 2026년 6월2일(2차) | 2026년 6월7일(2차) | |
| 복습 | O | o | |
| 문제 재풀이 | O |
1번
다음 괄호 안에 들어갈 내용으로 알맞은 것은?
10GB 용량의 하드디스크 8개가 장착된 시스템이다.
하나의 스페어(Spare) 디스크를 구성하고,
나머지 디스크로 RAID-5로 구성한다고 한다.
이 경우 실제로 사용 가능한 용량은 ( ) GB가 된다.
① 40 ② 50 ③ 60 ④ 70
정답: 60GB
📌풀이과정
1. 전체 디스크 개수를 확인한다.
총 8개 *10GB = 80GB
2. 스페어 디스크를 제외한다.
문제에서 "하나의 스페어 디스크를 구성한다."라고 되어있다.
그러면, 이때 RAID에 실제 참여하는 디스크의 개수는 [전체 디스크 개수 - 스페어 개수] = 7개이다.
3. RAID5 공식법을 적용한다.
RAID5 실제 사용 가능 용량은 (디스크 개수 - 1) * 디스크 용량
따라서 (7-1) * 10GB = 60GB이다.
🔔시험 팁
1. RAID 공식 암기:
- N = 디스크 개수
- S = 디스크 용량
2.문제에서 Spare, Hot Spare, Global Spare 같은 단어가 나오면
RAID 계산에서 제외해야한다.
👩🏫암기해야할 것: RAID특징
| RAID0 | 속도 향상 (Striping) |
| RAID1 | 데이터 복제(Mirroring) |
| RAID5 | 패리티 1개 사용 |
| RAID6 | 패리티 2개 사용 |
RAID0 = 속도 (Striping)
특징
- 데이터를 여러 디스크에 나누어 저장한다.
- 읽기/쓰기 속도가 매우 빠르다.
- 복구 기능이 없다.
- 예시
Disk1 : A
Disk2 : B
Disk3 : C
Disk4 : D
동시에 읽고 쓰므로 빠르다.
단점
- 디스크 1개만 고장나도 전체 데이터 손실 위험이 있다.
RAID1 = 복제 (Mirroring)
특징
- 같은 데이터를 두 디스크에 복사한다.
- 예시
Disk1 : DATA
Disk2 : DATA
장점
- 한쪽 디스크가 고장나도 복구가 가능하다.
단점
- 용량 절만만 사용 가능하다.
- 예시
- 1TB + 1TB
- 실제 사용 가능 = 1TB
RAID5 = 패리티 1개
패리티란? 고장 복구용 계산 데이터를 말한다.
RAID5는 데이터 분산 저장, 패리티도 함께 저장한다.
특징
- 속도 + 안정성 균형
- 디스크 1개 장애 복구 가능
용량 공식:
- N = 디스크 개수
- S = 디스크 용량
- 예시
- 10GB * 4개 -> 사용 가능: 30GB (1개 용량은 패리티용이다.)
RAID6 = 패리티 2개
RAID5보다 안정성 강화한다.
특징
- 패리티를 2개 저장한다.
- 디스크 2개까지 고장을 허용한다.
용량 공식: (N-2) * S
- N = 디스크 개수
- S = 디스크 용량
- 예시
- 10GB * 6개 -> 사용 가능: 40GB
2번
다음 설명에 해당하는 RAID 관련 기술로 알맞은 것은?
연속된 데이터를 여러 개의 디스크에 라운드 로빈(Round Robin) 방식으로 기록하는 기술로
하나의 디스크에 읽어 들이는 것보다 더 빠르게 데이터를 읽거나 쓸 수 있다.
① 스트라이핑(Striping) ② 미러링(Mirroring)
③ 패리티(Parity) ④ ECC(Error Check &Correction)
정답: 스트라이핑(Striping)
📌풀이과정
이 문제의 핵심 키워드는 라운드 로빈, 여러 디스크 분산 저장, 속도 향상
이건 RAID0의 대표 기술 'Striping'이다.
여기서 Striping이란
데이터를 여러 디스크에 나누어 저장하는 것을 말한다.
Disk1 : A
Disk2 : B
Disk3 : C
Disk4 : D
병렬 처리가 가능하고, 이로 인해 속도 향상 효과가 있다.
🔔시험 팁
문제에서 라운드 로빈, 분산 저장, 속도 향상 키워드가 나오면 무조건 Striping이라고 생각하면 된다.
추가로 기억하자. 각 RAID의 키워드는 다음과 같다.
- Mirroring: 복제 기술, 속도보다 안정성이 목적, RAID1 핵심
- Parity: 오류 복구용 계산 데이터, RAID5 핵심
- ECC: 메모리 오류 정정 기술, RAID 핵심 기술과 다르다.
👩🏫암기해야할 것: RAID특징
| RAID0 | 속도 향상 (Striping) |
| RAID1 | 데이터 복제(Mirroring) |
| RAID5 | 패리티 1개 사용 |
| RAID6 | 패리티 2개 사용 |
3번
다음 중 LVM 구성할 때 가장 먼저 생성되는 것은?
① VG(Volume Group) ② LV(Logical Volume)
③ PV(Physical Volume) ④ PE(Physical Extend)
정답: PV(Physical Volume)
📌풀이과정
pvcreate
vgcreate
lvcreate
위에는 LVM 구성할 때 생성 명령 순서이다.
즉, PV -> VG -> LV 순서이다.
🔔시험 팁
문제에서 LVM 초기 구성, 첫 단계, 물리 볼륨이 나오면 PV가 정답이다.
👩🏫암기해야할 것: LVM 구성할 때 생성 순서
PV → VG → LV
4번
다음 중 프린터 큐의 작업 정보를 확인하는 명령어로 알맞은 것은?
① lp ② lpr
③ lprm ④ lpstat
정답: lpstat
📌풀이과정
x
🔔시험 팁
공식 암기
- stat = 상태
- rm = 제거
👩🏫암기해야할 것: 프린트 명령
| lp | 출력 |
| lpr | 출력 |
| lpstat | 상태 확인 |
| lprm | 삭제 |
5번
리눅스 및 유닉스 계열 운영체제에서 사운드를 만들고 캡처하는 인터페이스로
표준 유닉스 시스템 콜(POSIX)에 기반을 두고 있다.
프로젝트 초기에 Free Software이었으나 사용화되기도 했다.
① ALSA ② CUPS
③ SANE ④ OSS
정답: OSS
📌풀이과정
x
🔔시험 팁
핵심 키워드는 초기 Free Software, 상용화, POSIX 기반, 사운드 인터페이스 이다.
해당 키워드가 나오면 OSS(Open Sound System)이다.
OSS(Open Sound System) 특징
- 초기 리눅스 사운드 시스템
- 유닉스 계열 사용
- 이후 일부 상용화
- ALSA 등장 이전 표준
👩🏫암기해야할 것: 장치 시스템 암기
| ALSA | 현재 사운드 |
| OSS | 옛날 사운드 |
| CUPS | 프린터 시스템 |
| SANE | 스캐너 시스템 |
*ALSA: 현재 리눅스 기본 사운드 시스템으로, OSS 이후 등장했음
6번
다음 중 스캐너 사용과 관련된 프로그램으로 알맞은 것은?
① ALSA ② CUPS
③ SANE ④ LPRng
정답: SANE
📌풀이과정
X
🔔시험 팁
👩🏫암기해야할 것: 장치 이름
| ALSA (Advanced Linux Sound Architecture) | 리눅스에서 사운드 카드를 제어하고 오디오를 처리하기 위한 표준 아키텍처 및 커널 드라이버 프레임워크 |
| CUPS (Common Unix Printing System) | Apple에서 개발하여 현재 리눅스 및 유닉스 계열 시스템의 표준으로 사용되는 오픈소스 프린팅 시스템입니다. HTTP 기반의 IPP(Internet Printing Protocol)를 통해 네트워크 프린터 및 웹 기반 제어를 지원합니다. (설정 디렉터리: /etc/cups) |
| SANE ( | 스캐너, 디지털 카메라, 비디오 캠 등 이미지 관련 입력 장치를 다양한 운영체제에서 제어할 수 있도록 해주는 범용 응용 프로그램 인터페이스(API) |
| LPRng (Line Printer next generation) | 리눅스 초기에 주로 사용되었던 프린터 인쇄 시스템입니다. 버클리 프린팅 시스템(BSD 계열)을 기반으로 하며, 라인 프린터 데몬(LPD) 프로토콜을 사용해 프린터 스풀링과 네트워크 프린터 서버를 지원 |
7번
다음 중 데비안 계열 리눅스에서 환경 설정 파일도 포함해서 vsftpd 패키지를 제거하는 명령으로 알맞은 것은?
① apt-get purge vsftpd ② apt-get remove vsftpd
③ apt-get erase vsftpd ④ apt-get delete vsftpd
정답: apt-get purge vsftpd
📌풀이과정
Debian/Ubuntu 계열에서는 위 명령어는 프로그램 삭제 + 설정 파일까지 삭제한다.
apt-get purge 패키지명
*purge: 깨끗하게 제거
remove와의 차이점도 알면 좋다.
apt-get remove vsftpd
프로그램만 삭제되고, 설정 파일은 남는다.
🔔시험 팁
x
👩🏫암기해야할 것: 삭제 명령어 암기
| remove | 패키지만 삭제 |
| purge | 설정까지 삭제 |
8번
다음 중 rpm 명령으로 의존성이 있는 패키지를 제거하는 명령으로 알맞은 것은?
① rpm -d nmap --nodeps
② rpm -e nmap --nodeps
③ rpm erase nmap --nodeps
④ rpm delete nmap -nodeps
정답: rpm -e nmap --nodeps
📌풀이과정
rpm 명령어로 패키지를 제거하고 의존성을 무시하는 옵션의 특징은 다음과 같다.
- -e (erase): rpm에서 패키지를 삭제(제거)할 때 사용하는 정식 옵션 글자
- --nodeps: 'No Dependency'의 약자로, 의존성 관계를 강제로 무시하고 삭제하는 옵션
- --nodeps(하이픈 2개 필수)를 붙이면 된다.
🔔시험 팁
x
👩🏫암기해야할 것: rpm 명령어의 다른 주요 옵션(설치, 조회, 업그레이드 등)
| 키워드 | 옵션 | 예시 |
| 패키지를 새로 설치 | -i (install) | rpm -ivh 패키지파일.rpm |
| 패키지 업그레이드(이전 버전 없으면 새로 설치) | -U (upgrade) | rpm -Uvh 패키지파일.rpm |
| 삭제 (설치된 패키지를 시스템에서 완전히 삭제) | -e (erase) | rpm -e nmap (nmap 패키지 삭제) |
| 패키지 조회 (설치된 패키지나 RPM 파일의 정보를 확인) | -q (query) | 일부 조회 예시임 -qa (query all): 시스템에 설치된 모든 패키지를 목록으로 출력합니다.
|
| 패키지 업그레이드 (이전 버전이 이미 설치되어 있는 경우에만 업그레이드) | -F (freshen) | rpm -Fvh 패키지파일.rpm |
| 패키지 검증(패키지 파일의 크기, 수정 시간, 권한 등이 변경되었는지 원본과 비교) | -V (verify) |
9번
다음은 확장 패키지 관련 저장소를 설치하는 과정이다. (괄호) 안에 들어갈 내용으로 알맞은 것은?
# yun install (괄호)
① epel ② epel-repository
③ epel-release ④ epel-download
정답: epel-release
📌풀이과정
EPEL (Extra Packages for Enterprise Linux) 이란 RHEL/CentOS 추가 패키지 저장소이다.
EPEL 저장소 설치 패키지 는 아래와 같다.
epel-release
다음은 실제 명령어이다.
yum install epel-release
🔔시험 팁
1.시험 문제 보기로 항상 epel, epel-repository와 같은 그럴듯한 단어가 섞여 나온다. 무조건 release가 뒤에 붙는다는 점을 머릿속에 각인시켜야 한다. 무조건 !!!!! release가 뒤에 붙는다는 점을 머릿속에 각인해야한다.
2.시험에 같이 나오는 세트 메뉴 (repolist): EPEL 저장소를 설치한 후, 해당 저장소가 정상적으로 시스템에 등록되어 활성화되었는지 확인할 때 사용하는 명령어도 함께 출제되기도 한다.
- 명령어
yum repolist (또는 dnf repolist)
3. epel-release 외에도 yum의 주요 옵션을 묻는 문제가 세트로 출제된다. 아래 3가지만 추가로 눈에 익혀두기
yum search [키워드] : 저장소에서 특정 키워드가 포함된 패키지 검색
yum localinstall [RPM파일 경로] : 다운로드한 로컬 RPM 파일을 의존성까지 해결하며 설치
yum history : 그동안 yum으로 설치/삭제했던 작업 이력 확인
👩🏫암기해야할 것: EPEL 패키지 명령어 암기
📌yum install epel-release
📌EPEL의 정식 명칭인 Extra Packages for Enterprise Linux에서 Enterprise Linux가 의미하는 바를 알아두면 서술형이나 객관식 문제를 풀 때 매우 유리하다.
- EPEL의 목적: Red Hat Enterprise Linux(RHEL), CentOS, Rocky Linux 등 기업형 리눅스 배포판은 안정성을 위해 기본 저장소에 보수적인 패키지만 담아둔다. 이때 기본 저장소에 없는 최신·추가 오픈소스 패키지들을 사용하기 위해 Fedora 프로젝트에서 제공하는 확장 저장소가 바로 EPEL입니다.
dnf install epel-release
10번
다음은 다운로드 받은 소스 파일의 내용만을 확인하는 과정이다. (괄호) 안에 들어갈 내용으로 알맞은 것은?
# tar (괄호) php-8.2.7.tar.bz2① jxvf ② Jxvf
③ jtvf ④ Jtvf
정답: jtvf
📌풀이과정
tar 옵션에서 옵션의미를 보자.
[압축 해제 옵션]
| tar 매칭 옵션 | 압축 확장자 | |
| x (extract) | 압축 해제하여 파일들을 추출하기 | |
| t (list) | 압축을 풀지 않고 파일의 목록 보기 | |
| c | 압축 생성 | |
| v | 과정 출력 | |
| f | 파일 지정 | |
| z | .gz | gzip |
| j | .bz2 | bzip2 |
| J | .xz | xz |
문제에서 내용만을 확인하는 과정이라고 명시했으므로, x가 들어간 1,2번은 탈락이며
t가 들어간 3,4번으로 압축된다.
[압축 형식 확인]
.tar.bz2
bzip2 압축.을 의미한다.
파일 확장자가 .tar.bz2로 끝나는 파일은 bzip2 방식으로 압축된 파일이다.
tar에서 이 압축을 처리하기 위한 옵션 문자는 다음과 같다.
- j (소문자): bzip2 방식(.tar.bz2)을 처리할 때 사용
- J (대문자): xz 방식(.tar.xz)을 처리할 때 사용
- v (verbose): 처리되는 과정을 화면에 자세히 보여줌
- f (file): 작업할 파일명을 지정함 (항상 파일명 바로 앞에 위치해야 하므로 보통 옵션의 맨 마지막에 붙습니다.)
🔔시험 팁: tar 옵션 한눈에 정리하기 (시험 단골), 압축 확장자압축 도구
| 압축 확장자 | 압축 도구 | tar 매칭 옵션 |
| .gz | gzip | z |
| .bz2 | bzip2 | j |
| .xz | xz | J |
👩🏫암기해야할 것
x
11번
다음 설명에 해당하는 명령으로 알맞은 것은?
소스 파일의 압축을 푼 디렉터리에서 한 번 작업한 설정이나
관련 파일을 삭제하고 다시 설정 작업을 진행할 때 사용한다.
① make init ② make zero
③ make clean ④ make neat
정답: make clean
📌풀이과정
소스 파일 (Tarball)를 컴파일하면 수많은 목적 파일(.o)과 바이너리 파일이 생성된다.
이전에 실행했던 컴파일 설정과 생성된 파일들을 모두 지우고 초기 상태로 되돌려 다시 빌드하고 싶을 때 사용하는 명령어는 make clean 이다.
더 나아가 환경 설정 파일까지 모두 지우려면 make lclclean이나 make distclean을 쓰기도 한다.
🔔시험 팁
- make는 Makefile에 적힌 규칙(Target)을 실행하는 도구
- init, zero, neat 라는 타겟은 리눅스 표준 소스 빌드 과정에서 기본 제공하는 청소 명령어가 아니다.
👩🏫암기해야할 것:
make clean: 빌드 과정에서 목적 파일(.o) 및 관련 파일 삭제(소스 디렉터리 초기화)
12번
다음 중 프로그램을 소스 파일로 설치하는 과정으로 알맞은 것은?
① configure → make → make install
② make → configure → make install
③ make → make install → configure
④ make install → configure → make
정답: configure → make → make install
📌풀이과정
리눅스 소스 설치의 표준 3단계 프로세스이다.
1. configure: 사용자 시스템 환경(컴파일러 버전, 라이브러리 위치 등)을 점검하고 설정을 반영하여 Makefile을 생성한다.
2. make: 생성된 Makefile을 바탕으로 소스 코드를 컴파일하여 실행 가능한 바이너리 파일(목적 파일)들을 만든다.
3. make install: 컴파일 완료된 실행 파일, 라이브러리, 메뉴얼 등을 시스템의 지정된 경로(예를 들어 /user/local/bin)로 복사 및 설치한다.
🔔시험 팁
각 단계의 주요 생성 파일 혹은 요구 권한을 묻는 응용 문제가 자주 나온다.
configure는 Makefile을 만들고, 앞의 두 단계는 일반 유저로도 가능하지만 시스템 디렉터리에 파일을 복사하는 make install 단계는 root 권한이 필요하다.
👩🏫암기해야할 것: 설치 순서
환경 설정(configure) -> 컴파일(make) -> 설치(make install)
13번 / 14번 (지문 중복됨)
다음 중 리눅스에서 사용되는 온라인 패키지 관리 도구로 거리가 먼 것은?
① dnf ② rpm
③ zypper ④ apt-get
정답:
📌 13/14번 문제 중복으로 인한 기출문제 의도파악에 따라 정답이 달라짐
1) 데비안 계열의 온라인 도구: apt-get
2) Red Hat 계열의 오프라인 도구: rpm
3) 최신 온라인 패키지 관리자 도구: dnf
📌풀이과정
rpm
- Red Hat 패키지 관리자의 기본 명령어이다.
- 로컬 패키지 파일을 설치하지만 의존성이 있는 다른 패키지를 자동으로 인터넷에서 다운로드하지 못하게 한다.
yum/dnf
- rpm의 단점(의존성 문제)을 해결하기 위해 인터넷 저장소(Repository)에서 관련 패키지를 한 번에 다운로드 해 설치하는 온라인 패키지 관리 도구이다.
- CentOs/RHEL 8 버전부터 yum이 dnf로 대체되었다.
apt-get
- Debian 및 Ubuntu 계열 리눅스에서 사용하는 온라인 패키지 관리도구이다.
zypper
- openSUSE 리눅스에서 사용하는 패키지 관리 도구이다.
🔔시험 팁
👩🏫암기해야할 것
- Red Hat 계열: rpm(로컬/오프라인), yum/dnf(온라인 저장소)
- Debian/Ubuntu 계열: dpkg(로컬/오프라인), apt-get/apt(온라인 저장소)
- SUSE 계열: zypper, 리눅스 패키지 관리 도구
15번
다음중 vi 편집기의 ex 명령모드에 대한 설명으로 틀린 것은?
① w → 작업중인 내용을 저장한다.
② w 파일명 → 지정한 '파일명'으로 저장한다.
③ wg → 변경된 내용을 저장하고 종료한다.
④ q → 수정된 사항이 있어도 무조건 종료한다.
정답: q
📌풀이과정
vi 에디터의 ex 명령 모드(콜론 ':'을 누르고 시작하는 모드)에서 단순 q는 변경 사항이 없을 때만 종료하라는 명령어이다.
만약 파일 내용이 조금이라도 수정되었다면 vi는 경고 메시지를 띄우고 종료하지 않는다.
수정 사항을 무시하고 강제로 조건 없이 종료하려면 느낌표를 붙인 q!를 사용해야한다.
🔔시험 팁
ex 모드에서 느낌표(!)는 '강제(Forced)' 혹은 '쉘 명령어 실행'의 의미를 갖는다.
👩🏫암기해야할 것:
- :w (저장)
- :q (종료)
- :wq (저장 후 종료)
- :q! (저장하지 않고 강제 종료)
16번
다음 (괄호) 안에 들어갈 내용으로 알맞은 것은?
vi 편집기의 명령 모드 상태에서는 특정 문자열을 아래 방향으로 검색하기 위해서는 (ㄱ) 기호를 선언한 뒤에 찾으려는 문자열 패턴을 덧붙여서 기재한다. 만약 다음 문자열을 찾으려면 (ㄴ) 키를 누르면 이동된다.
① ㉠ /, ㉡ n ② ㉠ ?, ㉡ n
③ ㉠ /, ㉡ N ④ ㉠ ?, ㉡ N
정답: ① ㉠ /, ㉡ n
📌풀이과정
vi 에디터의 명령 모드에서 문자열을 검색할 때 방향에 따라 단축키가 달라진다.
- /: 커서 위치에서 아래 방향(downward/forward)으로 검색한다.
- ?: 커서 위치에서 위 방향(upward/backward)으로 검색한다. 검색어를 입력하고 엔터를 친 후, 동일한 방향으로 다음 매칭 단어를 찾을 때는 소문자 n을 누르고, 역방향으로 찾을 떄는 대문자 N을 누른다. 문제에서 '아래방향으로 검색하기 위해서'라고 명시 했으므로 기호는 /이며, 다음 문자열로 이동하는 키는 n이다.
🔔시험 팁
소문자 n은 "현재 검색을 진행하던 방향 그대로 다음 단어 찾기"이고, 대문자 N은 "진행 방향과 반대로 거슬러 올라가며 찾기
👩🏫암기해야할 것:
- / + 검색어: 아래로 검색
- ? + 검색어: 위로 검색
- n: 순방향 다음 찾기
- N: 역방향 다음 찾기
17번
다음 중 vi 편집기에서 linux로 끝나는 줄의 마지막에 마침표(.)을 덧붙이도록 치환하는 명령으로 알맞은 것은?
① :% s/linux./linux$/
② :% s/linux$/linux./
③ :% s/linux/linux./
④ :% s/linux/linux$/
정답: :% s/linux$/linux./
📌풀이과정
vi 에디터의 치환 문법인 :% s/찾을패턴/바꿀패턴/ 과 정규 표현식을 복합적으로 다루는 문제이다.
- 정규 표현식에서 $는 줄의 끝(End of line)을 의미한다. 따라서 linux$는 "linux라는 단어로 끝나는 줄의 행 끝"을 찾아낸다.
- 이를 linux.으로 치환하라는 의미는 끝에 점(.)을 추가하라는 뜻이 된다.
🔔시험 팁
- ^ : 줄의 시작 (예: ^linux -> linux로 시작하는 줄)
- $ : 줄의 끝 (예: linux$ -> linux로 끝나는 줄)
- % : 파일 전체 영역을 대상으로 지정
👩🏫암기해야할 것: vi 에디터의 치환(Substitute) 문법
:% s/오래된문자/새로운문자/g 패턴 공식
18번
다음 중 emacs 편집기를 개발한 인물로 알맞은 것은?
① 빌 조이 ② 리처드 스톨만
③ 브람 브레나르 ④ 귀도 반 로섬
정답: Richard Stallman, 리처드 스톨만
📌풀이과정
리눅스/유닉스 역사와 오픈소스 편집기 개발자를 연결하는 단골 지식형 문제이다.
리처드 스톨만: GNU 프로젝트의 창시작이자 자유 소프트웨어 재단(FSF)의 설립자이다.
emacs 에디터를 개발했다.
🔔시험 팁
- Bill Joy: BSD 유닉스를 만들고, vi 에디터의 모태인 오리지널 vi를 개발한 사람
- Bram Moolenaar: vi의 확장판인Vim (Vi IMproved)을 개발한 사람
- Guido van Rossum: 텍스트 에디터가 아닌 프로그래밍 언어 Python을 개발한 사람
👩🏫암기해야할 것: 리눅스/유닉스 역사
vi = Bill Joy / Vim = Bram Moolenaar / Emacs = Richard Stallman
19번
다음 중 nano 편집기에서 현재 커서가 위치한 줄의 처음으로 이동할 때 사용하는 키 조합으로 알맞은 것은?
① [Ctrl]+[a] ② [Ctrl]+[e]
③ [Ctrl]+[o] ④ [Ctrl]+[i]
정답: [Ctrl]+[a]
📌풀이과정
가볍고 다루기 쉬운 CLI 텍스트 에디터인 nano(혹은 쉘 환경의 Emacs 스타일 단축키)의 커서 이동키를 묻는 문제
- [Ctrl] + [a]: 현재 행의 맨 처음(Beginning)으로 커서를 이동함
- [Ctrl] + [e]: 현재 행의 맨 끝(End)으로 커서를 이동함 (End의 'e'로 외우면 쉬움)
- [Ctrl] + [o]: 작성 중인 파일을 저장(WriteOut)함
🔔시험 팁
리눅스 배시 쉘(Bash Shell) 커맨드라인 인터페이스 명령어 창에서라도 Ctrl + a와 Ctrl + e는 문장의 처음과 끝으로 가는 단축키로 완벽하게 동일하게 작동하므로 시험에 자주 출제 된다.
👩🏫암기해야할 것: 리눅스 배시 쉘(Bash Shell) 커맨드라인 인터페이스 명령어
Ctrl + a: 라인 시작점으로 이동
Ctrl + e: 라인 끝점으로 이동
20번
다음 중 X 윈도 환경에서만 사용 가능한 편집기로 알맞은 것은?
① nano ② pico
③ kwrite ④ vim
정답: kwrite
📌풀이과정
텍스트 에디터가 터미널 기반(CLI)인지, GUI 환경(X Window) 전용인지를 구분하는 문제이다.
- kwrite : 리눅스 데스크톱 환경 중 하나인 KDE(X Windows) 환경에서 제공하는 GUI 기반의 기본 텍스트 편집기이다. (윈도우의 메모장과 유사함) 따라서 터미널 전용 쉘 환경에서는 단독 실행할 수 없다.
- nano, pico, Vim: 검은색 터미널 창(CLI) 내부에서 그래픽 화면 없이 바로 텍스트를 편집할 수 있는 대표적인 텍스트 에디터들이다.
🔔시험 팁
X Window 전용(GUI) 에디터 종류를 외워두면 쉽게 소거법으로 풀 수 있다.
대표적인 GUI 에디터로는 gedit(GNOME 데스크톱 전용), kwrite / kate(KDE 데스크톱 전용)가 있다.
👩🏫암기해야할 것:
GUI 에디터 (X Window 필수): gedit, kwrite
21번
다음 중 작업번호가 2번인 백그라운드 프로세스를 종료시키는 명령으로 알맞은 것은?
① kill 2 ② kill %2
③ kill -j 2 ④ kill -b 2
정답: kill %2
📌풀이과정
- kill 명령어 뒤에 숫자를 그냥 쓰면 시스템의 고유 번호인 PID(프로세스 ID)를 인식하여 종료를 시도한다.
- 만약, kill 2라고 입력하면 작업 번호 2번이 아니라, PID가 2번인 시스템 프로세스(kthreadd 등)를 종료하게 되므로 원하는 결과가 나오지 않는다.
- jobs 명령어로 확인하는 작업 번호(Job ID)를 지정하여 종료할 때는 숫자 앞에 반드시 퍼센트 기호(%)를 붙여야 한다.
🔔시험 팁
- kill %2와 kill %[2]는 완전히 동일하게 작업 번호 2번을 뜻합니다.
- 백그라운드 작업을 포그라운드로 가져오는 fg %2, 백그라운드로 실행시키는 bg %2에서도 똑같이 %가 사용됩니다.
👩🏫암기해야할 것: kill 명령어
- kill [숫자] = PID 종료
- kill %[숫자] = 작업 번호(Job) 종료
22번
ps 명령의 상태(STAT) 코드 중에 작업은 종료되었으나 부모프로세스에 의해 회수되지 않아 메모리를 차지하고 상태를 나타내는 값으로 알맞은 것은?
① R ② S
③ T ④ Z
정답: Z
📌풀이과정
자식 프로세스가 실행을 끝마쳤음에도 불구하고, 부모 프로세스가 자식의 종료 상태를 확인(wait 시스템 콜 호출)하지 않아 시스템 프로세스 테이블에 껍데기만 남아 있는 상태를 좀비 프로세스(Zombie Process)라고 한다.
이 좀비 상태를 나타내는 대문자 코드가 바로 Z이다.
🔔시험 팁
- R (Running/Runnable): 실행 중이거나 실행 대키 큐에서 대기 중인 상태
- S (Sleeping): 대기 상태 , 이벤트나 신호가 오기를 기다리는 상태
- T (Stopped): 시그널(Ctrl+Z)에 의해 작업이 일시 중지된 상태
👩🏫암기해야할 것:
Z = Zombie (좀비 프로세스) -> 시험에 가장 많이 출제되는 상태 코드
23번
다음 중 프로세스 관련 명령어로 설정 가능한 NI 값의 범위로 알맞은 것은?
① -19 ~ 19 ② -19 ~ 20
③ -20 ~ 19 ④ -20 ~ 20
정답: -20 ~ 19
📌풀이과정
- 리눅스에서 프로세스의 우선순위를 조정하는 값을 NI(Nice 값)이라고 한다.
- NI 값의 전체 범위는 -20부터 19까지 총 40단계로 구성되어 있다.
- 값이 작을수록(음수) 우선순위가 높아지고, 값이 클수록(양수) 우선순위가 낮아진다. (다른 프로세스에게 자원을 양보하므로 Nice하다는 의미이다.)
🔔시험 팁
- 일반 사용자는 양수 값(0~19)으로만 조절하여 우선순위를 낮출 수만 있다.
- 마이너스 값(우선순위 높이기)을 설정하여 시스템 자원을 더 많이 뺏어오려면 오직 root(관리자) 권한이 필요하다.
👩🏫암기해야할 것: NI 값 범위
-20 ~ 19 : 숫자가 낮을수록 왕, 높을수록 양보
24번
cron을 이용해서 해당 스크립트를 매주 1회씩 주기적으로 실행하려고 한다. (괄호) 안에 들어갈 내용으로 알맞은 것은?
( 괄호 ) /etc/backup.sh
① 1 1 1 * *
② 1 1 * 1 *
③ 1 1 * * 1
④ * 1 1 1 *
정답: 1 1 * * 1
📌풀이과정
이미지에 제시된 문법은 crontab에 등록하는 주기 설정 파일 양식이다.
crontab은 한 줄에 총 5개의 시간 필드를 공백으로 구분하여 정의한다.
- crontab 구조 공식: 분 시 일 월 요일
- 문제에서 '매주 1회씩 주기적으로' 실행하라고 지시했으므로, 매달 특정 날짜(일, 월)에 얽매이지 않고 특정 '요일'에만 반복되어야 한다. 따라서 '일'과 '월' 자리에는 모든 값을 의미하는 와일드카드 기호인 별포(*)가 들어가야한다.
- 요일 필드에서 1은 월요일을 뜻하므로, 1 1 * * 1로 지정하면 '매월 매일 구분 없이, 매주 월요일(1) 01시 01분에 스크립트가 실행되어 매주 1회 주기적 실행 조건을 완벽히 충족한다.
1번 지문: 1 1 1 * *
매달 1일 01:01에 실행 (매월 1회)
2번 지문: 1 1 * 1 *
1월 동안 매일 01:01에 실행 (매일, 월이 1월로 한정)
3번 지문: 1 1 * * 1
매주 월요일 01:01에 실행 (요일 = 1, 월요일로 고정, 주1회)
4번 지문: * 1 1 1 *
매년 1월 1일 01시 동안 매분 실행 (아주 여러 번)
🔔시험 팁
요일 숫자 매칭
일반적인 cron에서 요일 필드는 보통 아래처럼 사용한다.
0 또는 7: 일요일 (system마다 다를 수 있지만 보통 둘 다 일요일 허용)
1: 월요일
2: 화요일
3: 수요일
4: 목요일
5: 금요일
6: 토요일
- 예시
//매주 화요일 01:00에 실행
0 1 * * 2 /etc/backup.sh
//매주 수요일 23:30에 실행
30 23 * * 3 /etc/backup.sh
매달 특정 일,월이 정해져있으면 crontab 작성 방법
- 형식 : [분 시 일 월 요일 명령]
- 일(3번째 필드) : 매달 며칠인지
- 월(4번째 필드): 몇 월인지
- 예시
//매달 10일 03:30에 실행
30 3 10 * * /etc/backup.sh
//매년 3월 15일 04:00에 실행
0 4 15 3 * /etc/backup.sh
//매년 3월과 9월 15일 04:00에 실행 (여러 개 나열 가능)
0 4 15 3,9 * /etc/backup.sh
주의) 일과 요일을 동시에 지정하면 둘 중 하나라도 맞으면 실행되는 구현이 많다.
AND가 아니라 OR처럼 동작하는 시스템이 많다. 시험 문제에서는 보통 하나만 명확하게 쓰는 걸로 생각하면 된다.
👩🏫암기해야할 것: crontab 5대 필드 순서
- 분 ➔ 시 ➔ 일 ➔ 월 ➔ 요일 (앞 글자를 따서 '분시일월요'로 외우면 절대 헷갈리지 않는다.)
25번
다음 명령의 결과에 대한 설명으로 알맞은 것은?
# nice bash
① bash 프로세스의 우선순위를 높인다.
② bash 프로세스의 우선순위를 낮춘다.
③ bash 프로세스의 우선순위 값을 출력한다.
④ 사용법 오류로 인해 실행되지 않는다.
정답: bash 프로세스의 우선순위를 낮춘다.
📌풀이과정
- nice는 프로세스의 nice값(우선 순위 조정값)을 변경해 CPU 스케줄링 우선순위를 조절하는 명령이다.
- nice 값 범위: -20 ~ 19 (기본값 0)
- nice 값이 클수록 -> 우선순위가 낮아진다. (CPU를 덜 받음)
- nice 값이 작을수록 -> 우선순위가 높아진다.
- nice bash처럼 숫자 없이 쓰면 기본으로 nice + 10 이 적용된다.
- 따라서 bash는 우선순위가 낮아진 상태로 실행된다.
🔔시험 팁
- nice = 착한(양보하는) 프로세스 -> 우선순위를 낮춘다고 기억하면 된다.
- '높인다': -n에 음수를 줄 때만 해당 (일반 사용자는 불가능)
- '값을 출력': nice 단독 실행 시 현재 nice 값 출력(인자 없이 nice만 칠 때)
👩🏫암기해야할 것:
| 명령 | 의미 |
|
nice bash
|
nice +10 → 우선순위 낮춤
|
|
nice -n 5 bash
|
nice +5 → 조금 낮춤
|
|
nice -n -10 bash
|
nice -10 → 우선순위 높임 (root만 가능)
|
26번
다음 중 포어그라운드 프로세스를 종료하기 위해 사용하는 키 조합으로 알맞은 것은?
① [Ctrl]+[c] ② [Ctrl]+[a]
③ [Ctrl]+[z] ④ [Ctrl]+[d]
정답: [Ctrl]+[c]
📌풀이과정
| 키 조합 | 동작 |
|
Ctrl+C
|
포어그라운드 프로세스 종료
|
|
Ctrl+Z
|
일시 정지 → 백그라운드로 보냄
|
|
Ctrl+D
|
EOF (입력 종료, 로그아웃 등)
|
- 종료와 일시 정지를 구분하는 문제가 자주 나온다.
- Ctrl + C = kill
- Ctrl + Z = suspend
🔔시험 팁
- 백그라운드로 보낸다 : Ctrl + Z
- 완전히 끝낸다: Ctrl + C
- Ctrl + D: 프로세스 강제 종료가 아니라 입력 스트림 종료
👩🏫암기해야할 것:
X
27번
다음 중 standalone 방식과 inetd 방식에 대한 비교 설명으로 알맞은 것은?
① inetd 방식이 standalone 방식보다 메모리 관리가 더 효율적이다.
② inetd 방식이 standalone 방식보다 관련 서비스 처리가 빠르다.
③ 웹과 같은 빈번한 요청이 들어오는 서비스는 inetd 방식이 적합하다.
④ 사용자가 많은 서비스는 standalone 방식보다 inetd 방식이 적합하다.
정답: inetd 방식이 standalone 방식보다 메모리 관리가 더 효율적이다.
📌풀이과정
Standalone (독립 실행형)
- 데몬이 항상 실행 중
- 요청이 오면 바로 처리 -> 응답 빠름
- 웹, FTP 등 요청이 많은 서비스에 적합함
- 메모리를 계속 점유함
inetd/xinetd (슈퍼 서버 방식)
- inetd가 여러 서비스 포트를 대신 감시함
- 요청이 올 때만 해당 서비스 프로세스를 fork/spawn
- 사용하지 않을 때는 메모리 거의 안 씀 -> 메모리 효율적
- 요청마다 프로세스 생성 -> 처리 속도는 느림
- telnet, tftp등 가끔 쓰는 서비스에 적합함
🔔시험 팁
x
👩🏫암기해야할 것:
- standalone = 항상 실행, 빠름, 메모리 많이 씀, 트래픽 많을 때
- inetd = 필요할 때만 실행, 느림, 메모리 절약, 가끔 쓰는 서비스
28번
다음 중 사용자가 본인이 실행한 백그라운드 프로세스 목록을 확인하는 명령어로 가장 알맞은 것은?
① ps ② bg
③ jobs ④ exec
정답: jobs
📌풀이과정
- jobs: 현재 쉘에서 실행한 job(작업) 목록 표시
- [1] + Running ... / Stopped 형태
- ps: 시스템 전체 프로세스 목록 (쉘 job 한정 아님)
- bg: 일시 정지된 job을 백그라운드에서 재개
- exec: 현재 쉘 프로세스를 다른 프로그램으로 교체
🔔시험 팁
- “본인이 실행한”, “현재 셸”이라는 표현 → 거의 항상 jobs이다.
👩🏫암기해야할 것:
| 명령 | 역할 |
|
jobs
|
내 백그라운드/일시정지 job 목록
|
|
fg %1
|
job 1번을 포어그라운드로
|
|
bg %1
|
job 1번을 백그라운드 재개
|
29번
다음 보기의 시그널을 번호값이 낮은 순부터 높은 순으로 정렬했을 때 세 번째에 해당하는 시그널 이름으로 알맞은 것은?
① SIGTSTP ② SIGKILL
③ SIGINT ④ SIGTERM
정답: SIGTERM
📌풀이과정
[자주 나오는 시그널 번호]
| 시그널 | 번호 | 의미 |
|
SIGINT
|
2
|
Ctrl + C, 인터럽트 |
|
SIGKILL
|
9
|
강제 종료 (catch 불가)
|
|
SIGTERM
|
15
|
정상 종료 요청 (kill 기본) |
| SIGTSTP
|
20
|
Ctrl + Z, 일시 정지
|
- 1위 SIGINT(2) → 2위 SIGKILL(9) → 3위 SIGTERM(15) → 4위 SIGTSTP(20)
🔔시험 팁
- 9(SIGKILL) 과 15(SIGTERM) 순서를 자주 헷갈린다 → 9 < 15 로 암기.
- kill → SIGTERM(15), kill -9 → SIGKILL(9)
👩🏫암기해야할 것:
2 = SIGINT (Ctrl+C)
9 = SIGKILL (kill -9, 무조건 종료)
15 = SIGTERM (kill, 정상 종료 요청)
20 = SIGTSTP (Ctrl+Z)
30번
다음 (괄호) 안에 들어갈 내용으로 알맞은 것은?
① ㉠ exec, ㉡ fork
하나의 프로세스가 다른 프로세스를 실행하기 위한 시스템 호출 방법에는 (ㄱ)와 (ㄴ)이 있다. (ㄱ) 는 새로운 프로세스를 위해 메모리를 할당 받아 복사본 형태의 프로세스를 실행하는 형태로 기존의 프로세스는 그대로 실행되어 있다. 새롭게 생성된 프로세스는 원래의 프로세스와 똑같은 코드를 기반으로 실행된다. (ㄴ) 는 원래의 프로세스를 새로운 프로세스로 대체하는 형태로 호출한 프로세스의 메모리에 새로운 프로세스의 코드를 덮어 씌워 버린다.
② ㉠ fork, ㉡ exec
③ ㉠ background, ㉡ foreground
④ ㉠ foreground, ㉡ background
정답: (ㄱ): fork , (ㄴ): exec
📌풀이과정
[fork]
- 새 프로세스 생성 (자식 프로세스)
- 부모 프로세스 메모리, 코드를 복사 (COW)
- 부모와 자식 모두 계속 실행
- 자식은 부모와 같은 코드로 시작 -> 이후 exec 로 다른 프로그램 실행하는 경우가 많음
[exec] - execve 계열
- 현재 프로세스를 새 프로그램으로 교체
- PID는 유지, 메모리/코드가 새 프로그램으로 덮어씌워짐
- exec 성공 시 원래 코드로 돌아오지 않음
[실제 프로세스 실행 흐름]
| # 전형적인 패턴 fork() → 자식 프로세스 생성 (복사본) exec() → 자식이 새 프로그램으로 교체 |
🔔시험 팁
x
👩🏫암기해야할 것:
- “복사본”, “기존 프로세스 그대로” → fork
- “대체”, “덮어씌운다” → exec
- background/foreground는 실행 방식이지 시스템 호출 이름이 아니다.
31번
다음 명령의 결과에 대한 설명으로 알맞은 것은?
모든 사용자에게 적용되는 alias와 함수를 설정하려고 한다.
① /etc/.bashrc ② /etc/.bash_profile
③ /etc/bashrc ④ /etc/profile
정답: 모든 사용자에게 적용되는 alias와 함수 설정 파일은 /etc/bashrc
📌풀이과정
셸 설정 파일은 적용 범위(전체 vs 개인) 와 셸 종류(로그인 vs 비로그인) 로 나뉜다.
| 파일 | 적용 대상 |
|
/etc/profile
|
모든 사용자 로그인 셸
|
|
/etc/bashrc
|
모든 사용자 bash 대화형 셸
|
|
~/.bash_profile
|
개인 로그인 셸
|
- 문제는 '모든 사용자' + alias와 함수를 묻고 있다.
- alias: 함수는 /etc/bashrc에 두는 것이 맞다.
- /etc/ 아래에 .으로 시작하는 파일은 일반적이지 않다.
🔔시험 팁
- alias·함수 → 거의 항상 bashrc“
- 환경변수(PATH 등) → profile
- 모든 사용자” → /etc/ 로 시작
👩🏫암기해야할 것:
/etc/profile → 전체 사용자, 로그인 시, 환경변수
/etc/bashrc → 전체 사용자, bash 실행 시, alias·함수
~/.bashrc → 개인 alias·함수
32번
다음 중 괄호 안에 들어갈 명령의 결과로 알맞은 것은?
[idhuser@ihd ~]$ user= kaitman [idhuser@ihd ~]$ echo "$user" (괄호)
① 아무것도 출력되지 않는다.
② $user
③ ihduser
④ kaitman
정답: user=kaitman 후 echo $user 결과는 kaitman이다.
📌풀이과정
user=kaitman # 올바른 변수 대입
echo "$user" # → kaitman 출력
쉘 변수 대입 규칙
- = 앞뒤에 공백이 있으면 안된다.
- $user -> 변수 user 값 출력 -> kaitman
[⚠️ 공백 함정 (시험에서 자주 쓰는 함정)]
만약 user= kaitman 처럼 = 뒤에 공백이 있으면:
user= kaitman # 변수 대입이 아님!
# user="" 로 kaitman 명령 1회 실행 시도
echo "$user" # user 미설정 → ① 아무것도 출력 안 됨
| 작성 | 의미 | echo "$user" 결과 |
|
user=kaitman
|
변수 대입 ✅
|
kaitman (④)
|
|
user= kaitman
|
대입 아님 ❌
|
빈 줄 (①)
|
🔔시험 팁
- $user가 그대로 출력되는 경우는 echo '$user' (작은따옴표)일 때.
- ihduser는 $USER(대문자, 환경변수)와 혼동하기 쉽다. 문제의 변수명은 user(소문자).
👩🏫암기해야할 것:
변수 대입: name=value (공백 X)
변수 사용: $name 또는 ${name}
문자열 출력: echo "$user"
33번
다음 중 가장 최근에 실행한 명령을 재실행할 때 사용하는 명령으로 알맞은 것은?
① !0
② !1
③ !!
④ history -1
정답: 가장 최근에 실행한 명령 재실행: !!
📌풀이과정
| 명령 | 동작 |
|
!!
|
직전 명령 그대로 재실행
|
|
!0❌
|
history 0번 (보통 존재하지 않음)
|
|
!1
|
history 1번 명령 실행 |
| hisotry - 1 |
history 목록 출력 (재실행 아님)
|
$ ls -l
$ !! # → ls -l 다시 실행
🔔시험 팁
- 재실행: !! 또는 !번호
- 목록 확인 : history
👩🏫암기해야할 것:
!! → 직전 명령 재실행
!번호 → history 번호로 재실행 (예: !25)
!문자 → 해당 문자로 시작하는 최근 명령 (예: !ls)
34번
다음은 셸 변수를 선언한 후에 관련 내용을 확인하는 과정이다. (괄호) 안에 들어갈 명령어로 알맞은 것은?
$ a=1 $ b=2 $ (괄호)
① printenv
② unset
③ env
④ set
정답: 쉘 변수를 확인하는 명령어 -> set
📌풀이과정
이 문제의 핵심은 쉘 변수를 확인하는 명령이 무엇인지이다.
| 명령 | 역할 |
|
set
|
export 여부와 관계없이 현재 셸의 모든 변수 표시
|
|
env / printenv
|
export된 환경변수만 표시
|
| unset |
변수 삭제 (확인용 아님)
|
a=1, b=2 모두 export 없이 대입한 쉘 변수이다.
- set => a,b 둘다 보임
- env/printenv => 둘 다 안보임
그래서 b=2가 맞든 b =2이든 정답은 set이다.
다만, 풀이 내용만 조금 달라진다.
[b=2] 기출 원문
a=1 # ✅ a=1 설정
b=2 # ✅ b=2 설정
set # a, b 모두 출력됨
두 변수가 정상 설정된 상태에서 확인하는 문제 → 더 단순하고 깔끔
[b =2], 앞 뒤 공백 함정
a=1 # ✅ a=1 설정
b =2 # ❌ 변수 대입 아님 → b라는 명령 실행 시도
set # a만 보이고 b는 없음
문법 함정은 겸한 문제가 도니다.
그래도 a=1 하나만 있어도 env/printenv에는 a가 안보이므로 정답은 여전히 set이다.
🔔시험 팁
- b =2는 의도적 함정 → 변수 대입 문법을 같이 묻는 문제.
- “셸 변수 확인” → set, “환경변수 확인” → env / printenv
👩🏫암기해야할 것:
set → 셸 변수 전체 (export 안 된 것 포함)
env → export된 환경변수만
export → 셸 변수 → 환경변수로 내보내기
unset → 변수 삭제
35번
다음은 로그인 셀을 확인하는 과정이다. (괄호) 안에 들어갈 명령어로 알맞은 것은?
[idhman@www ~] # (괄호) PID TTY TIME CMD 2472 pts/0 00:00:00 bash 2881 pts/1 00:00:00 (괄호)
① ps ② chsh
③ jobs ④ shells
정답: 로그인 쉘 확인하는 명령어는 ps이다.
📌풀이과정
[출력 형식]
PID TTY TIME CMD
2472 pts/0 00:00:00 bash
2881 pts/1 00:00:00 bash
이 형식은 ps 명령 결과의 전형적인 형태다.
| 명령 | 역할 | 이 출력과의 관계 |
|
ps
|
실행 중인 프로세스 목록
|
✅ PID, TTY, CMD 형식과 일치
|
|
chsh
|
로그인 셸 변경
|
변경 도구, 목록 출력 아님
|
|
jobs
|
현재 셸의 백그라운드 job
|
[1] Running ... 형식
|
|
shells
|
표준 명령 아님
|
/etc/shells 파일을 말하는 경우도 있으나 ps 출력과 무관
|
- pts/0, pts/1 터미널에서 bash가 떠 있는 것을 ps로 확인하는 흐름이다.
- “로그인 셸 확인” = 현재 어떤 셸(bash) 프로세스가 돌아가는지 프로세스 관점에서 확인하는 문제.
🔔시험 팁
- PID / TTY / TIME / CMD 헤더 → ps
- 셸 경로만 묻으면 → echo $SHELL
- [1]+ Running 형태 → jobs
👩🏫암기해야할 것:
ps → 프로세스 목록 (PID, TTY, CMD)
echo $SHELL → 로그인 셸 경로 확인 (/bin/bash 등)
chsh → 로그인 셸 변경
jobs → 현재 셸 job 목록
36번
다음 (괄호) 안에 들어갈 파일명으로 알맞은 것은?
특정 사용자가 로그인 시에 부여되는 쉘 정보는 (괄호)파일에서 확인할 수 있다.
① /etc/passwd ② /etc/shells
③ /etc/bashrc ④ /etc/profile
정답: 로그인 시 부여되는 쉘 정보 확인 파일은 /etc/passwd이다.
📌풀이과정
리눅스에서 특정 사용자의 로그인 쉘은 /etc/passwd 파일에 저장된다.
[ /etc/passwd 한 줄 형식]
- 콜론 (:) 구분, 7개 필드
ihdman:x:1000:1000:IHD User:/home/ihdman:/bin/bash
↑ 7번째 필드 = 로그인 셸
- 문제의 로그인 시 부여되는 쉘 정보는 passwd 7번째 필드
- grep ihdman /etc/passwd로 해당 사용자 쉘 확인 가능
[헷갈리기 쉬운 파일 구분]
| 파일 | 확인하는 내용 |
|
/etc/passwd
|
특정 사용자의 로그인 셸, UID, 홈 디렉터리
|
|
/etc/shells
|
이 시스템에서 사용 가능한 셸 종류 목록
|
|
/etc/group
|
그룹 정보
|
|
/etc/shadow
|
암호화된 비밀번호 (root만 읽기)
|
chsh -l 은 /etc/shells 목록
특정 사용자의 로그인 쉘은 /etc/passwd
🔔시험 팁
- “특정 사용자” + “로그인 셸” → /etc/passwd
- passwd 7필드 중 자주 나오는 것: 1=사용자명, 3=UID, 6=홈, 7=로그인 셸
- “변경 가능한 셸 목록” → /etc/shells 또는 chsh -l
👩🏫암기해야할 것:
/etc/passwd → 누가, 어떤 셸로, 어디 홈에 로그인하는지 (사용자별)
/etc/shells → 어떤 셸을 쓸 수 있는지 (시스템 전체 목록)
chsh -l → /etc/shells 확인
grep user /etc/passwd → 특정 사용자 로그인 셸 확인
37번
다음은 ihdman 사용자가 변경 가능한 셀의 목록 정보를 확인하는 과정이다. (괄호) 안에 들어갈 내용으로 알맞은 것은?
[ihdman@www ~]$ chsh (괄호)
① -l
② -u
③ -s
④ -c
정답: 변경 가능한 쉘 목록 확인 : -l
📌풀이과정
전체 맥락은 보통 다음과 같다.
chsh (괄호) # ihdman 사용자가 선택 가능한 셸 목록 확인
[ chsh(change shell) 옵션 ]
| 옵션 | 의미 |
|
-l
|
/etc/shells에 등록된 사용 가능한 셸 목록 출력
|
|
-s 셸경로
|
로그인 셸 변경 (예: chsh -s /bin/bash)
|
|
-u 사용자
|
대상 사용자 지정 (root만)
|
- 변경 가능한 셸 목록을 확인 → chsh -l
- 실제 목록은 /etc/shells 파일 기준
🔔시험 팁
- 목록 확인 → -l (list)
- -u는 사용자 지정, -c는 chsh 옵션이 아님
- 셸 변경 → -s (shell)
👩🏫암기해야할 것:
chsh -l → 사용 가능한 셸 목록
chsh -s /bin/bash → 로그인 셸 변경
/etc/shells → 시스템에서 허용하는 셸 목록
38번
다음 설명에 해당하는 셀로 알맞은 것은?
히스토리 기능, Alias기능, 작업 제어 등과 같은 유용한 기능이 포함된 쉘로 1978년에 버클리 대학의 빌조이가 개발하였다.
① bourne shell ② csh
③ dash ④ bash
정답: 1978년 버클리, 빌조이, 히스토리/Alias/작업제어 => csh
📌풀이과정
| 셸 | 개발 | 특징 |
|
csh (C Shell)
|
1978년, UC 버클리, 빌 조이
|
히스토리, alias, 작업 제어(job control)
|
|
bourne shell (sh)
|
1979년, 스티븐 본, AT&T Bell
|
POSIX sh의 기반, 스크립트용
|
|
bash
|
1989년, Brian Fox
|
bourne sh + csh 기능 통합
|
🔔시험 팁
- “빌 조이 + 버클리 + 1978” → 거의 항상 csh
- “Bourne Again + GNU” → bash
- bash도 alias·히스토리·job control이 있지만, 개발자·연도·학교가 csh 쪽과 맞지 않음
👩🏫암기해야할 것:
csh → 1978, Bill Joy, Berkeley, history/alias/job control
bash → 1989, Bourne Again Shell, sh + csh 기능
sh → 1979, Stephen Bourne, 스크립트 기본
39번
다음 설명에 해당하는 파일명으로 알맞은 것은?
현재 시스템에 마운트된 파일 시스템 정보를 저장하고 있는 파일로 실제 파일은 /proc/self/mounts이다.
① /etc/fstab ② /etc/mtab
③ /etc/mounts ④ /proc/partitions
정답: 현재 마운트 정보 파일 (실제 파일: /proc/self/mounts) => /etc/mtab
📌풀이과정
| 파일 | 역할 |
|
/etc/mtab
|
현재 마운트된 파일시스템 정보 (보통 /proc/mounts 또는 /proc/self/mounts로 연결)
|
|
/etc/fstab
|
부팅 시 자동 마운트 설정 (정적 설정)
|
|
/etc/mounts
|
일부 시스템에서 mtab과 유사 (기출에서는 mtab이 정답)
|
|
/proc/partitions
|
디스크 파티션 정보 (마운트 정보 아님)
|
- fstab = “앞으로 어떻게 마운트할지” (설정)
- mtab = “지금 무엇이 마운트되어 있는지” (현재 상태)
최근 리눅스에서는 /etc/mtab이 /proc/self/mounts의 심볼릭 링크인 경우가 많습니다. 문제에 그 설명이 직접 나옵니다.
🔔시험 팁
- “현재 마운트” → mtab 또는 mount 명령
- “부팅 시 자동 마운트 설정” → fstab
👩🏫암기해야할 것:
/etc/fstab → 부팅 시 마운트 설정 (고정)
/etc/mtab → 현재 마운트 상태 (동적) → /proc/self/mounts
mount → 현재 마운트 확인 명령
40번
다음 중 /etc/fstab 파일의 첫 번째 필드에 설정할 수 있는 값으로 틀린 것은?
① UUID ② LABEL
③ 마운트 포인트 ④ 장치 파일명
정답: /etc/fstab 첫번째 필드 => 마운트 포인트
📌풀이과정
[ /etc/fstab 6개 필드 ]
(1) 장치/식별자 (2) 마운트포인트 (3) 파일시스템타입 (4) 옵션 (5) dump (6) fsck순서
[1번 필드(파일시스템/장치) 에 올 수 있는 값]
- 장치 파일명: /dev/sda1, /dev/nvme0n1p2
- UUID: UUID=xxxx-xxxx
- LABEL: LABEL=데이터
- 예시
UUID=abc-123 /home ext4 defaults 0 2
/dev/sda1 / ext4 defaults 0 1
LABEL=DATA /data xfs defaults 0 2
↑ 1번 ↑ 2번(마운트 포인트)
🔔시험 팁
- fstab은 필드 순서가 자주 출제됨
- 1번 = 무엇을, 2번 = 어디에 로 기억하면 쉽다.
👩🏫암기해야할 것:
fstab 6필드:
1=장치(UUID/LABEL/디바이스)
2=마운트포인트
3=파일시스템종류(ext4,xfs...)
4=옵션(defaults 등)
5=dump(0/1)
6=fsck 순서(0/1/2)
41번
다음은 ihduser 사용자의 홈 디렉터리가 차지하고 있는 디스크 용량을 확인하는 과정이다. (괄호) 안에 들어갈 명령어로 알맞은 것은?
# (괄호) 56M /home/ihduser
① df -sh ~ihduser ② quota ihduser
③ du -sh ~ihduser ④ df -sh /home/ihduser
정답:홈디렉터리 디스크 용량 확인: du -sh ~ihduser
📌풀이과정
56M /home/ihduser
이 형식은 특정 디렉터리가 실제로 차지하는 용량을 보여주는 du(disk usage)의 전형적인 출력이다.
| 명령 | 역할 | 이 문제와 맞는가 |
|
du -sh ~ihduser
|
해당 디렉터리 하위 파일 용량 합계
|
✅
|
|
df -sh /home/ihduser
|
해당 경로가 올라 있는 파일시스템 전체 사용량
|
❌
|
|
quota ihduser
|
사용자 할당량(quota) 확인
|
❌
|
- du = 이 폴더가 얼마나 차지하냐?
- df = 이 파일/파일 시스템이 얼마나 찼냐?
~ ihduser와 /home/ihduser는 같은 경로를 가리키지만 du가 정답이다.
df는 디렉터리 크기 확인용이 아니다.
🔔시험 팁
- 56M /경로 형식 → 거의 항상 du
- -s = summary(합계), -h = human-readable(읽기 쉬운 단위)
- df 는 Filesystem, Size, Used, Avail, Use%, Mounted on 같은 표 형식
👩🏫암기해야할 것:
du -sh /경로 → 디렉터리 용량
df -h → 파일시스템(파티션) 사용량
quota 사용자 → 디스크 할당량
42번
다음중 fdisk 작업 후에 변경된 파티션 정보를 저장하고 종료하는 명령어로 알맞은 것은?
① n
② w
③ x
④ q
정답: fdisk 작업 후 저장하고 종료 => w
📌풀이과정
[ fdis 내부 명령]
| 명령 | 의미 |
|
w
|
write — 변경사항 저장 후 종료
|
|
q
|
quit — 저장 하지 않고 종료
|
|
n
|
new — 새 파티션 생성
|
| x | extra/export 기능 (저장, 종료가 아님) |
파티션 작업 후 반드시 w 를 입력해야 디스크에 반영된다.
🔔시험 팁
- 저장하고 나간다 → w
- 저장 안 하고 나간다 → q
- parted에서는 quit 사용 — fdisk와 구분
👩🏫암기해야할 것:
fdisk 주요 명령:
p → 파티션 목록 출력 (print)
n → 새 파티션 (new)
d → 파티션 삭제 (delete)
w → 저장 후 종료 (write) ★
q → 저장 없이 종료 (quit)
43번
다음 결과에 해당하는 명렁어로 알맞은 것은?
[root@www ~]# /dev/sda1: UUID="7314520d-725e-424b-917e-ccdac407276f" TYPE="xfs" /dev/sda2: UUDI="06dc516e-68cd-401f-af90-d72576803484" TYPE="swap" [root@www ~]#
① lsblk ② blkid
③ fdisk ④ uuid
정답: UUID, TYPE 출력 명령: blkid
📌풀이과정
/dev/sda1: UUID="7314..." TYPE="xfs"
/dev/sda2: UUID="06dc..." TYPE="swap"
UUID= + TYPE= 형식은 blkid 의 대표적인 출력이다.
| 명령 | 출력 형식 |
|
blkid
|
/dev/sda1: UUID="..." TYPE="xfs"
|
|
lsblk
|
NAME, MAJ:MIN, RM, SIZE, RO, TYPE, MOUNTPOINT (트리 구조)
|
|
fdisk -l
|
Disk /dev/sda, 파티션 테이블, 섹터 정보
|
|
uuid
|
표준 명령 아님
|
🔔시험 팁
- UUID + TYPE → blkid
- 파티션 편집/생성 → fdisk
- 블록 장치 트리 구조 → lsblk
👩🏫암기해야할 것:
blkid → UUID, TYPE, LABEL 확인
lsblk → 블록 장치 목록 (트리)
fdisk /dev/sda → 파티션 편집
44번
다음 그림에 해당하는 명렁어로 알맞은 것은?
Black grace time: 7days; Inode grace time: 7days Block limits User used soft hard grace used soft hard grace ------------------------------------------------------------------------------------ root ... 0 0 0 3 0 0 alin ... 12 102400 112640 7 0 0 joon2 ... 12 0 0 7 0 0
① quota ② edquota
③ repquota ④ xfs_quota
정답: quota 사용량 전체 리포트 => repquota
📌풀이과정
[출력 특징]
- 모든 사용자(root, alin, joon2)의 quota 현황
- Block limits, Inode 항목
- used / soft / hard / grace 컬럼
| 명령 | 역할 |
|
repquota
|
파일시스템별 전체 사용자 quota 리포트 (관리자용)
|
|
quota
|
특정 사용자 본인 또는 지정 사용자 quota
|
|
edquota
|
quota 편집
|
|
xfs_quota
|
XFS 전용 quota 도구
|
여러 사용자를 표로 보여주는 관리자 리포트: repquota
🔔시험 팁
- 한 사용자 quota → quota
- quota 설정/수정 → edquota
- 전체 사용자 표 → repquota
👩🏫암기해야할 것:
quota → 내 quota 확인
repquota → 전체 사용자 quota 보고서
edquota → quota 편집
45번
다음 중 설정된 umask 값이 0022일 경우 생성되는 파일의 허가권 값으로 알맞은 것은?
① -rw-r--r-- ② -rw-rw-r--
③ -rwxr-xr-x ④ -rwxrwxr-x
정답: umask 0022일 때 생성 파일 권한( -rw-r--r--)
📌풀이과정
umask 0022 → 기본 권한에서 022를 빼는 방식으로 계산
| 종류 | 기본값 | umask | 결과 | 권한 |
|
파일
|
666
|
22
|
644
|
-rw-r--r--
|
|
디렉터리
|
777
|
22
|
755
|
drwxr-xr-x
|
[계산]
파일: 666 - 022 = 644
소유자: rw- (6)
그룹: r-- (4)
기타: r-- (4)
🔔시험 팁
- 파일 기본 666, 디렉터리 기본 777 — 이 차이를 꼭 기억
- umask 002 → 664 / 775 (그룹은 쓰기 허용)
- umask 022 → “그룹·기타에게 쓰기 빼기” → 644 / 755
👩🏫암기해야할 것:
umask 022 → 파일 644 (-rw-r--r--), 디렉터리 755
umask 002 → 파일 664 (-rw-rw-r--), 디렉터리 775
umask 077 → 파일 600 (-rw-------), 디렉터리 700
46번
project 그룹에 속한 사용자들이 /project 디렉터리에서 파일 생성은 자유로우나 삭제는 본인의 생성한 파일만 가능하도록 설정하려고 한다. 또한 파일 생성 시 자동으로 그룹 소유권이 project로 부여되도록 설정하려고 한다. /project 디렉터리의 정보가 다음과 같을 때 관련 명령으로 알맞은 것은?
[root@www /]# ls -ld /project drwxr-x--. 2 root project 6 Apr 4 19:32 /prject [root@www /]#
① chmod 1770 /project ② chmod 2770 /project
③ chmod 3770 /project ④ chmod 5770 /project
정답: 공유 디렉터리 (setgid + sticky bit) - chmod 3770 /project
📌풀이과정
[요구사항 2가지]
| 요구 | 필요한 설정 | 비트 |
|
파일 생성 시 그룹이 project로 자동 설정
|
setgid
|
2
|
|
본인 파일만 삭제 가능 (타인 파일 삭제 불가)
|
sticky bit
|
1
|
| 그룹 멤버 rwx, others 없음
|
770
|
-
|
[특수 권한 비트]
1 = sticky bit (공유 디렉터리 삭제 제한)
2 = setgid (디렉터리: 새 파일 그룹 상속)
4 = setuid (실행 파일: 소유자 UID 상속)
[합산]
1(sticky) + 2(setgid) + 770 = 3770
🔔시험 팁
- 공유 폴더 + 그룹 자동 상속 → setgid (2)
- 둘 다 필요 → 3xxx (예: 3770, 3775)
- 남의 파일 못 지움 → sticky (1)
👩🏫암기해야할 것:
공유 폴더 + 그룹 자동 상속 → setgid (2)
남의 파일 못 지움 → sticky (1)
둘 다 필요 → 3xxx (예: 3770, 3775)
47번
다음 명령의 결과로 설정되는 lin.txt 파일의 허가권 값으로 알맞은 것은?
[posein@www ~]$ ls -l lin.txt -rw-rw-r--. 1 posein posein 81 Jun 28 17:09 lin.txt [posein@www ~]$ chmod g=r lin.txt
① ----r----- ② -r--r--r--
③ -rw-r--r-- ④ -rw-rw----
정답: -rw-r--r--
📌풀이과정
[변경 전] -rw-rw-r-- (664)
소유자(u): rw-
그룹(g): rw-
기타(o): r--
chmod g=r => 그룹 권한을 r만 남기고 나머지(w, x)제거
| 대상 | 변경 | 결과 |
|
소유자(u)
|
변경 없음
|
rw-
|
|
그룹(g)
|
=r (읽기만)
|
r--
|
결과: -rw-r--r-- (644)
🔔시험 팁
- g=r → 그룹에 읽기만 부여 (쓰기·실행 제거)
- g+r → 읽기 추가 (기존 권한 유지)
- = 는 “정확히 이것만”, + 는 “추가”, - 는 “제거”
👩🏫암기해야할 것:
chmod g=r → 그룹 = 읽기만
chmod g+r → 그룹에 읽기 추가
chmod g-w → 그룹 쓰기 제거
chmod u=rwx,g=rx,o=r → 754
48번
다음 중 파일이나 디렉터리의 소유자를 변경하는 명령어로 알맞은 것은?
① ls ② chgrp
③ chown ④ umask
정답: chown
📌풀이과정
| 명령 | 역할 |
|
chown
|
파일/디렉터리 소유자(및 그룹) 변경
|
|
chgrp
|
그룹만 변경
|
|
ls -l
|
권한·소유자 확인
|
chown user1 file.txt # 소유자 변경
chown user1:group1 file.txt # 소유자 + 그룹 변경
chgrp project file.txt # 그룹만 변경
🔔시험 팁
- 소유자(owner) → chown
- 그룹(group) → chgrp
- 둘 다 → chown user:group
👩🏫암기해야할 것:
chown 사용자 파일 → 소유자 변경
chown 사용자:그룹 파일 → 소유자+그룹 변경
chgrp 그룹 파일 → 그룹만 변경
'자격증 > 리눅스마스터2급' 카테고리의 다른 글
| [리눅스마스터 2급] (1) | 2026.06.02 |
|---|---|
| [리눅스마스터 2급] 2023년 09월 09일 시행 2과목 리눅스 활용 (49번 ~ 80번) (0) | 2026.06.02 |
| [리눅스마스터 2급] 2023년 12월 9일 시행 2과목 리눅스 활용 (49번 ~ 80번) (0) | 2026.06.02 |
| [리눅스마스터 2급] 2023년 06월 10일 시행 1과목 리눅스 운영 및 관리 정리 (1번 ~ 48번) (0) | 2026.06.02 |
| [리눅스마스터 2급] 2023년 09월 09일 시행 1과목 리눅스 운영 및 관리 정리 (1번 ~ 48번) (0) | 2026.06.01 |