티스토리 뷰

728x90

 

안녕하세요. 개발개입니다.

 

2002회 리눅스마스터(1급) 시험을 준비하게 되어

시험정보와 학습내용을 정리하고 공유하고자 합니다.

 

 

<목차>
  1. 시험 정보

  2. 리눅스 실무의 이해

    1. 리눅스의 개요

    2. 리눅스 시스템의 이해 [현재글]

    3. 네트워크의 이해

  3. 리눅스 시스템 관리

    1. 일반 운영 관리

    2. 장치 관리

    3. 시스템 보안 및 관리

  4. 네트워크 및 서비스의 활용

    1. 네트워크 서비스

    2. 네트워크 보안

 

 

 

 


 

 

 

01 리눅스와 하드웨어

하드웨어의 이해

컴퓨터 구성요소와 신호 흐름

 

RAID의 종류
  • RAID-0

  • 스트라이핑 기술(데이터를 여러 디스크에 걸쳐 저장)을 이용하여 분산 저장
  • 여러 디스크에 동시에 쓰므로 처리속도가 빠름

 

  • RAID-1

  • 미러링 기술을 이용하여 두 개의 디스크에 동시 기록
  • 디스크를 동시에 읽으므로 읽기 속도가 향상
  • 디스크 효율이 낮음 (데이터 중복)

 

  • RAID-2

  • 비트(bit)레벨의 스트라이핑 기술을 이용하여 최소 3개의 디스크에 데이터 분산 저장
  • 오류 정정 부호(ECC)를 기록하는 전용 디스크 있음 (복구 시 추가 연산으로 입출력 속도가 떨어짐)

 

  • RAID-3

  • 바이트(byte)레벨의 스트라이핑 기술을 이용하여 분산 저장
  • 순차적 쓰기 및 읽기 성능이 우수함
  • 패리티(패리티 비트를 추가해 데이터 유실/손상 여부 확인) 기술을 사용하므로 오류 체크 및 복구 가능

 

  • RAID-4

  • 블록(block)레벨의 스트라이핑 기술을 이용하여 분산 저장
  • 패리티 기술을 사용하여 에러 체크 및 정정 가능
  • 데이터 쓸 때마다 패리티 디스크도 접근하므로 쓰기 성능이 좋지 않음

 

  • RAID-5

  • 블록(block)레벨의 스트라이핑 기술을 이용하여 분산 저장
  • 모든 디스크에 패리티 나누어 저장
  • 성능은 RAID-0보다 부족하지만 성능/안정성/용량를 고려해 가장 보편적으로 쓰임

 

  • RAID-6

  • RAID-5와 유사하나 2차 패리티가 포함됨 (2개의 디스크 오류에 대처 가능)

 

 

  • RAID 0+1

  • 디스크 2개를 스트라이핑 기술을 사용하는 RAID-0으로 구성하고,
    RAID-0 세트를 미러링 기술을 사용하는 RAID-1로 구성

 

  • RAID 1+0

  • 디스크 2개를 미러링 기술을 사용하는 RAID-1로 구성하고,
    RAID-1 세트를 스트라이핑 기술을 사용하는 RAID-0으로 구성
  • RAID-1보다 성능이 높고 가격이 비쌈

 

  • RAID 5+3

  • RAID-3 방식에 스트라이프 배열을 구성하는 방식
  • RAID-3보다 성능이 높고 가격이 비쌈

 

 

LVM(Logical Volume Manager)
  • LVM 구성도

 

 

 

02 리눅스의 구조

부트매니저(=부트로더)
  • 운영체제(OS)를 주기억장치로 로드하는 보조기억장치의 프로그램
  • LILO(Linux Loader), GRUB(Grand Unified BootLoader)

 

주요 디렉터리
디렉터리 설명
/ 최상위 디렉터리
/bin/ 모든 사용자가 사용할 수 있는 주요 명령어 위치 (ls, mv, cp, mkdir, cat, ...)
/boot/ 부팅이 필요한 파일 위치 (커널파일, initrd, grub관련 파일, ...)
/dev/ 디파이스 파일 위치
/etc/ 시스템 환경 설정 파일, 시스템 초기화 시 수행되는 스크립트 파일
/home/ 로그인한 사용자 전용 홈 디렉터리
/lib/ 라이브러리 위치
/media/ 이동식 디스크 등 마운트 시 위치
/mnt/ 디바이스 마운트 시 임시 디렉터리
/opt/ 추가 어플리케이션 소프트웨어 패키지
/proc/ 메모리에 존재하는 모든 프로세스들이 파일 형태로 위치
/root/ 루트 사용자의 홈 디렉터리
/sbin/ root가 사용하는 시스템 관리 명령어 위치 (system binary)
/tmp/ 공용 디렉터리 (임시 파일 생성 등)
/usr/ 사용자가 설치한 주요 명령어 위치
/usr/bin/ 대부분의 사용자 명령어 포함
/usr/include/ 헤더 파일 위치
/usr/lib/ /usr/bin/과 /usr/sbin/의 바이너리에 링크하기 위한 라이브러리 위치
/usr/sbin/ 시스템 관리자가 사용하는 명령어, 상ㄷ적으로 중요하지 않은 명령어
/usr/src/ 바이너리의 소스코드 위치 (리눅스 커널 소스코드 등)
/usr/X11R6 X윈도우 관련 파일 위치
/var/ 임시 생성/삭제 되는 데이터 위치 (로그, 스풀 파일 등)

 

부팅절차
1 시스템 시작 및 하드웨어 초기화 BIOS 및 시스템 시작
2 부트 로더 1단계 MBR의 ILP 시작
3 부트 로더 2단계 ILP가 GRUB 부트 로더 시작
4 커널 Linux OS
5 init 프로세스 실행 레벨
6 사용자 프롬프트 명령어 입력 대기 상태

 

실행레벨
레벨 설명
0 시스템 종료
1 단일 사용자 모드 (시스템 복원 모드) - root 권한 셸을 얻을 수 있음
2 다중 사용자 모드 (네트워크 기능 X, 텍스트 기반)
3 다중 사용자 모드 (네트워크 기능 O, 텍스트 기반)
5 다중 사용자 모드 (X윈도우)
6 재부팅
  • /etc/inittab에 부팅과 관련된 실행 레벨 정의
  • /etc/rc.d/rc.local에 서버부팅 시마다 자동 실행 명령어 기록되며 부팅 시 가장 나중에 실행

 

파일시스템
  • ext
    • minix 개선 파일시스템
    • 타임스탬프 기능 없음, 아이노드 수정 기능 없음, 조각화(쓸수록 느려짐) 이슈
  • ext2
    • ext 개선 파일시스템
    • 타임스탬프 기능 생김, 아이노드 수정 기능 생김, 조각화 이슈 해결
    • block mapping
    • 데이터를 쓰는 동안 전원이 끊어지면 제대로 저장되지 않음
  • ex3
    • 저널링(로그를 통해 파일시스템 복구) 기술 도입 - 쓰는 동안 전원이 끊어져도 데이터 복구 가능
    • block mapping
  • ex4
    • ex2와 ex3 호환 및 확장
    • extends - 큰 파일 처리 개선 및 단편화 현상 줄임 (다중블록할당(malloc)으로 오버헤드 회피)
    • 온라인 조각모음 기능

 

  • 슈퍼 블록(super block)
    • 파일시스템의 전체 내용을 담고 있는 블록
    • 1KB만 사용
  • 아이노드(i-node)
    • 실제 파일과 디렉터리의 데이터 위치를 알고 있는 자료구조

 

 

 

03 X윈도우

  • X윈도우
    • X프로토콜을 사용하여 GUI 환경 구현
    • startx 명령어로 시작
  • X서버
    • 디스플레이 제어 및 X클라이언트와 통신, 관리
  • X클라이언트
    • Xlib을 사용하여 만들어진 응용 프로그램
    • X서버에 디스플레이 관련 서비스를 요청하거나 응답받아 처리함
    • 관련 명령어/환경변수 : xhost, xauth, DISPLAY 환경변수
  • X프로토콜
    • X서버와 X클라이언트가 정보를 주고 받기 위한 형식
  • Xlib/XCB
    • Xlib : X윈도우 시스템 프로토콜 클라이언트 라이브러리
    • XCB : Xlib 대체품
  • X세션
    • X서버에 X클라이언트가 연결되었을 때 생성되는 세션
  • 윈도우 매니저
    • X윈도우의 위치/이동/크기변경 등을 관리하는 프로그램
  • 디스플레이 매니저
    • 그래픽으로 구성된 로그인 유저 인터페이스를 사용자에게 제공
  • xhost 명령어
    • X서버에 접근할 수 있는 클라이언트 지정/해제하는 명령어

 

 

 

04 셸(Shell)

셸 종류
구분 특징
Bourne Shell  sh (bourne shell) 톰프슨 셸(유닉스 최초의 셸)을 대체하고 오랜기간 유닉스의 기본 셸이었음
ksh (korn shell) 본셸과 호환. history/alias/작업제어 기능 추가
bash (bourne again shell) 리눅스에서 가장 많이 사용하는 셸 (GPLv3 라이선스)
C Shell csh (C shell) C언어 기반
tcsh (TC shell) 명령줄 완성/편집 기능

 

로그인셸 비로그인셸
  • 로그인 셸 (Login Shell)
    • 사용자가 ID와 PW를 입력하여 셸에 진입하는 방식
    • 터미널에서 원격 ssh로 접속하는 등
  • 비로그인 셸 (Non-Login Shell)
    • 로그인 없이 셸을 실행하는 방식
    • 이미 로그인한 셸에서 bash 명령어를 사용하여 셸을 다시 실행하거나 X윈도우에서 터미널을 실행시키는 등

 

셸의 설정 파일
구분 설정 파일 특징
시스템
설정 파일
/etc/profile 시스템 전역 설정 파일
/etc/profile.d/* 로그인 시 해당 디렉터리 안 모든 셸 스크립트 실행
/etc/bashrc 비로그인 셸을 실행할 때마다 실행
사용자
설정 파일
~/.bash_profile
~/.bash_login
로그인할 때마다 실행. 개별 사용자 설정 파일
~/.profile 로그인할 때마다 실행. bash와 직접 관련 없는 설정 파일
~/.bashrc 비로그인 셸 실행할 때 실행. alias 등
~/.bash_logout 로그인한 셸을 로그아웃할 때마다 실행
  • 로그인 셸인 경우,
    • /etc/prifile과 /etc/prifile.d/* (시스템 전역 설정 파일) 실행
    • ~/.bash_prifile이나 ~/.bash_login과 ~/.profile (각 사용자별 실행 파일) 실행
  • 비로그인 셸인 경우,
    • 인터랙티브 셸 유무 확인 후
    • 인터랙티브 셸인 경우 /etc/bashrc 실행
    • ~/.bashrc실행
  • 모든 셸에 접근 가능한 변수를 선언하고자 할 때,
    • 사용자 변수인 경우 .bashrc에 선언
    • 시스템 변수인 경우 /etc/bash.bashrc에 선언

 

명령어 치환 기능
  • 명령어 실행 결과를 명령어 인자로 넘기는 기능
    • $(command)
    • `command`

 

표준입출력
구분 약어 파일 디스크립터
표준 입력 stdin 0
표준 출력 stdout 1
표준 에러 stderr 2

 

리다이렉션
> 프로그램 출력을 표준 출력에서 지정한 출력으로 변경
>> 프로그램 출력을 표준 출력에서 지정한 출력으로 변경하고 추가
< 프로그램 입력을 표준 입력에서 지정한 입력으로 변경
<< 프로그램 입력을 표준 입력에서 지정한 입력으로 변경하고 추가
  • e.g.
    • ./run-batch.sh >> batch.log : run-batch 쉘 프로그램의 출력을 batch.log 파일로 지정하고 출력 내용을 추가

 

파이프
  • 프로그램의 출력 결과를 다른 프로그램의 입력으로 전달
  • e.g.
    • ls -l | grep tomcat : 현재 디렉터리의 파일 목록 중 tomcat이라는 글자를 포함한 파일만 출력

 

참고사항
  • chsh 명령어
    • chsh -l : 시스템이 지원하는 셸 목록 조회
    • chsh -s : 사용하는 셸 변경
  • alias
    • 입력하기 복잡하거나 자주 사용하는 명령어의 별칭을 생성
  • /dev/null
    • 실제 존재하지 않는 논리적 장치(null)
    • 출력을 /dev/null로 지정하는 경우 출력하지 않는 것을 의미
  • 스크립트 실행 방법
    • #sh script.sh
    • #. script.sh
    • #source script.sh
    • #./script.sh (실행권한이 있는 경우)

 

셸스크립트
  • 조건문
if [ 표현식 ]
then
    명령문
elif [ 표현식 ]
then
    명령문
else
    명령문
fi
case $변수명 in
    패턴1)
        명령문
    패턴2)
        명령문
    *)
        명령문
esac
  • 반복문
for $변수명 in 값1, 값2
    do
        명령문
    done
while 표현식
do
    명령문
done
until 표현식
do
    명령문
done
select $변수명 in 메뉴1 메뉴2 메뉴3 ...
do
    명령어
done
  • 함수
function 함수이름
{
    명령문
}

 

 

 

05 프로세스 (PCB를 지닌 프로그램)

PCB (Process Control Block)
  • 프로세스 상태가 변경될 때마다 커널이 정보를 저장하는 자료구조
Pointer
Process State
Process Number
Program Counter
Registers
Memory Limits
Open File Lists
Misc. Accounting and Status Data

 

init 프로세스
  • 모든 프로세스의 부모 프로세스
  • 부트 로더에 의해 가장 먼저 실행하는 프로세스
  • PID(프로세스ID)는 항상 1

 

부모/자식 프로세스
  • 부모 프로세스
    • 프로세스 A가 프로세스 B를 실행/생성했을 때, 프로세스 A
  • 자식 프로세스
    • 프로세스 A가 프로세스 B를 실행/생성했을 때, 프로세스 B

 

고아/좀비 프로세스
  • 고아 프로세스
    • 부모 프로세스가 강제종료 등으로 유실된 경우의 자식 프로세스
  • 좀비 프로세스
    • 자식 프로세스의 종료 코드를 회수하지 못한 경우

 

백그라운드/포어그라운드 프로세스
  • 백그라운드 프로세스
    • 명령어의 수행이 다소 시간이 걸리는 등의 연유로 백그라운드에서 실행되는 프로세스
    • 명령어 뒤에 &을 붙이면 백그라운드로 실행됨
  • 포어그라운드 프로세스
    • 사용자의 입력을 받거나 실행 결과를 출력할 수 있는 상태의 프로세스
  • 백그라운드와 포어그라운드 간의 전환
    • 포어그라운드 → 백그라운드 : Ctrl + z (suspend) 후 bg 명령어 입력
    • 백그라운드 → 포어그라운드 : jobs 명령어를 통해 job id 확인 후 fg 명령어에 %job id를 매개변수로 전달

 

시그널
시그널 번호 시그널 이름 설명
1 SIGHUP 터미널의 접속 연결이 끊어질 때
2 SIGINT 인터럽트(Ctrl + c) 발생 시
3 SIGQUIT Ctrl + \ 입력 시
9 SIGKILL 프로세스 강제 종료
15 SIGTERM 프로세스 정상 종료
18 SIGCONT 정지된 프로세스를 다시 재개할 때
19 SIGSTOP 프로세스 중지할 때
20 SIGTSTP 프로세스 대기(Ctrl + z) 입력 시

프로세스 상태

 

참고 사항
  • sevice
    • 리눅스 서비스의 시작, 정지, 재시작 등을 제어하는 명령어
    • e.g. service httpd start
  • 현재 터미널에서 데몬을 실행하는 방법
    • /etc/rc.d/init.d/[데몬] start
    • service [데몬] start
    • /etc/init.d/[데몬] start
  • 터미널에서 부팅 시 실행할 데몬 설정 유틸리티
    • ntsysv [데몬] on

 

 

 


 

 

다음 글 : [리눅스마스터] 리눅스 실무의 이해 - 네트워크의 이해

 



728x90
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
05-02 11:49