[구름 k8s] TIL 1-2-1

Peppie·2022년 8월 8일
0

1. Linux 접속 방법

OS Booting

OS 프로그램을 메모리에 load 후 OS를 실행하여 OS가 동작하는 초기 과정

직접접속

직접 Linux에 접속

  • ID /PW 입력을 통한 접속 -> 어느 리눅스던 기본 방식
  • 자동 로그인: 별도의 ID / PW 입력과정 없이 login
    => Linux를 서버 목적으로 사용하는 경우는 여러 사람이 같이 쓰기 때문에 일반적 방식 X
  • Linux를 Desktop 방식으로 사용 시 많이 활용

원격접속

네트워크를 이용한 접속; 일반적으로 Linux 접근시 사용

SSH Client 프로그램 이용

SSH (Secure SHell)

네트워크를 이용하여 원격 접속 가능케 함
특히 공개 키 암호방식으로 접속하여 보안 강화 (22번 포트 활용)

SSH Client 프로그램

SSH Client 프로그램은 CLI 방식으로 작동

  • Windows : PuTTY (무료), xshell (유료) 등
  • Linux, MacOS : terminal 프로그램 사용

Putty

공개 키 파일 형식 ( .ppk ), 비밀 키는 리눅스가 가짐

  • Session 메뉴 : Hostname 또는 IP 주소와 포트 결정 후 open 버튼 선택 시 접속 (주로 이 방식)
  • Connection 메뉴 -> SSH 메뉴 -> Autho 항목에서 private key 파일 별도 지정 가능

원격 접속을 위해서는 Linux에 SSH Server 프로그램이 동작하고 있어야 한다.

  • Ubuntu 배포판: SSH 서버 프로그램 기본 설치 X -> Ubuntu 설치 후 별도 설치 필요
  • CentOS 배포판 : SSH 서버 프로그램 기본 설치, booting 시 자동 실행

2. Linux 구조

Linux 구조

Kernel

HW (CPU/메모리/IO 장치) 제어; Kernel Space 동작

System Call Interface

Kernel과 Shell 또는 Library, Application 간 통신을 수행하는 함수 (function) 집합; Kernel Spacel 동작

Shell

사용자의 Kernel에게로의 명령 전달 및 실행결과 확인용 프로그램 + 프로그램 실행 수행
=> User Space 동작

"터미널 프로그램은 shell 동작시켜줄 GUI 프로그램"
"Linux system을 운영한다는 것은 shell을 이용하여 운영하는 것"

GNU (glibc 또는 libc)

Linux 기본 라이브러리, Linux용 App이 기본으로 사용하는 함수 집합; User Space 동작

사용자 Library / Application

사용자 응용 SW; User Space 동작

Kernel Space

Kernel이 동작하는 영역, 실행모드가 보호 모드로 동작
-> 일반 App이 직접 Kernel 영역 내용을 사용하진 X

User Space

Kernel을 제외한 프로그램이 동작하는 영역, 사용자 모드로 프로그램 동작

32 bit CPU 환경에서 Kernel Space 2GB, User Space 2GB 메모리 고정 할당
=> 따라서 이 이상 용량을 늘려줘도 항상 실질 사용량은 총합 4GB로만 고정

Linux Kernel 구조

작업 관리자

  • CPU 동작 및 관련 처리 담당
  • 프로그램 실행 (= process 생성) 및 관리: context
  • Scheduler : multi-process 제어를 위한 기능, CPU 동작에 연관

메모리 관리자

  • 메모리 관리
  • 가상 메모리 관리
  • Linux의 모든 프로세스는 가상 메모리에서 동작
  • 가상 메모리와 물리 메모리 연결 관리 수행

파일 시스템

  • Linux는 모든 I/O 장치를 파일 형태로 관리
  • 장점: 장치에 상관없이 동일한 명령 적용 가능
  • 추상화 (Absolute) 계층적 성격 - 정해진 인터페이스를 이용하여 동일한 사용법으로 제어
  • 파일 시스템을 통해 I/O 장치 내용 관리

네트워크 관리자

  • 네트워크 프로토콜 스택 (TCP/IP)

디바이스 관리자

  • HW 연결 관리 프로그램 (= Device Driver)
  • Linux에서 관리하는 디바이스 유형은 Block Device와 Character Device로 구분하여 관리

Shell 명령은 Kernel 내용 中 작업 관리자 / 메모리 관리자 / 파일 시스템에 대한 내용이 주를 이룸;
필요에 따라 네트워크 관리자 / 디바이스 관리자 사용가능

Linux Kernel 소스 => https://makelinux.github.io/kernel/map

3. Linux 사용자 이해

관리자 (Supervisor)

  • Linux 시스템에 대한 모든 권한을 갖는 사용자
  • 관리자 ID는 root로 고정되어 있으면 변경 혹은 추가 관리자 등록은 불가능
  • 배포판에 따라 관리자 login을 허용하지 않는 배포판 존재 => 그게 바로 Ubuntu
  • Shell 명령 프롬프트는 #으로 표기
  • 관리자 기본 홈 디렉토리는 /root 사용
  • login 또는 관리자 계쩡 전환시 홈 위치는 /root
  • 일반적으로 일반유저로 login한 후에 필요에 따라 관리자 권한 획득 (sudo 명령)을 하거나 필요시 관리자 전환 (su 명령)을 통해 관리자로 사용 (supervisor 로그인은 가급적 지양)

sudo 명령

관리자 권한 획득 후 관리자 권한의 명령 수행

sudo <명령>

  • 일반 유저로 login 후 관리자 권한 필요시 사용
  • 명령: 관리자 권한이 필요한 명령
  • 이때 입력하는 비밀번호는 login 사용자 PW

su - [<사용자 ID>]

  • root 사용자로 전환, 비밀번호는 root 사용자 PW

일반 사용자

  • 관리자와 별도 등록된 사용자
  • 일반 유저권한의 작업만 가능
  • Shell 명령 프롬프트는 $로 표시
  • 일반 유저 홈 디렉토리는 /home/<사용자 ID>
  • login시 홈 위치는 /home/<사용자 ID>

pwd 명령 : 현재 디렉토리 경로(path) 출력 명령

Shell

  • Linux Kernel - 사용자 사이 상호작용을 위해 사용하는 Linux 응용 프로그램
  • Shell은 독립된 Linux 응용 프로그램 -> 필요시 Shell을 변경하여 사용
  • 현재 Linux 표준 Shell은 bash (bourne-again shell) 사용
  • Linux 표준 Shell은 sh
  • Linux Shell의 종류는 다양; csh, zsh (MacOS 표준), ksh, sh, bash
  • 현재 Shell 확인 명령: echo $SHELL -> 현재 사용하고 있는 shell 표시

Shell Prompt

  • Shell 명령을 입력할 수 있도록 대기 상태
  • Shell Prompt가 표시되어야 다음 명령 입력 가능,
    Shell Prompt 표시가 없으면 현재 명령을 수행하고 있다는 의미
  • terminal 프로그램은 Shell을 실행하기 위한 윈도우 프로그램

Shell Prompt 형태

사용자@hostname: 현재 디렉토리 < $ | # >

  • 사용자: 현재 사용자
  • hostname: 현재 사용중인 Linux System 이름, IP 주소 형식 또는 Domain 형식으로 표시
  • 현재 디렉토리: 현재 위치한 디렉토리 이름
    ~ : 현재 사용자 홈 디렉토리를 의미
  • $ | # : 일반 유저 ( $ ) 또는 관리자 ( # )

whoami : 현재 사용자 확인

명령 history (이력) 기능 제공

  • history
    Shell에서 입력한 명령 history 관리
    Shell에서 입력한 명령이 차례대로 쌓임
    history 관리 대상 명령 개수는 환경설정에 의해 변경 가능 (기본은 1000개의 명령 history 관리)
  • 상/하 방향키를 이용하여 이전 명령 history 사용

Shell에서 사용하는 단축키

  • Ctrl + L : 터미널 화면을 지울 때 사용
    clear : 터미널 화면 지우는 명령
  • Ctrl + W : 입력 명령을 단어 단위 삭제
  • Ctrl + U : 입력 명령 전체 삭제
  • Ctrl + C : 현재 동작 중인 프로그램 강제 종료
  • Ctrl + D : 프로그램 (정상) 종료
  • 명령 자동 완성
    tab 키 : 입력된 문자를 갖는 명령에 대한 자동완성
    tab 키 + tab 키 : 입력된 문자를 모두 포함하는 명령 목록 출력

4. 파일 종류와 특징

Linux 파일 시스템

File System

보조기억장치에 파일 및 디렉토리 관리 방법

Linux 관리 대상 파일 종류

일반 파일

데이터 저장

  • 텍스트 파일 ( text file )
    텍스트 형식 (ASCII 코드)으로 데이터 저장
    내용 직접 확인 가능

    문자 코드 종류

    • ASCII 코드 : 7 ~ 8 bit
    • UNICODE : 2 byte
    • UTF-8 : 대표적인 문자 encoding, 1 ~ 3 byte 크기, 영어/한글 혼용시 주로 사용
    • CP949 : Windows가 사용하는 문자 인코딩 방식, 他 OS 호환 X -> 요즘 거의 안쓰임
  • 바이너리 파일 ( binary file )
    바이너리 형식 (이진수, 메모리 내용)으로 저장한 파일
    통상 실행 가능한 파일 多

디렉토리 파일

디렉토리 정보 전달

여기서 Windows와의 차이: Windows에선 디렉토리를 파일로 간주하지 않으나 리눅스에선 파일 취급

특수 파일

링크 파일: 파일에 대한 링크 (연결) 정보 파일

디바이스 파일

IO 디바이스 접근 목적 파일 ; 저장보다는 연결 목적

  • 문자 (Character) 디바이스 파일 : 문자 단위 입출력 장치에 대한 파일 - Keyboard
  • 블록 (Block) 디바이스 파일 : 블록 단위 입출력 장치에 대한 파일 - HDD, SSD

파이프 (pipe) 파일

프로세스 (process) 간 통신 수행시 사용, 역시 데이터 저장 목적 X

Linux는 파일 형식에 따라 확장자로 구분하는 / 파일 작성시 확장자를 반드시 포함하는 별도 규칙 X
=> 파일명 통해서 파일형식 파악 어려움

파일 형식 확인 명령

file <파일 path를 포함한 파일명>

  • 파일 형식 출력 명령
  • ELF 포맷 파일은 실행 가능한 파일

Linux 기본 디렉토리 구조


Linux 디렉토리 구조는 / (root) 기준으로 계층 구조 형성

디렉토리 계층 구조 명령

tree

  • 기본명령 X -> 별도 설치과정 필요
    Ubuntu
    sudo snap install tree : 명령 다운로드
    sudo apt install tree : 명령 설치
    CentOS
    su 명령어 입력 후 -> yum install -y tree
    (sudo yum install -y tree 명렁어는 직접 확인해본 결과 실행되지 않음)
  • -d : directory만 표시

각 디렉토리 목록

  • / (root) : 루트 디렉토리, 최상위 디렉토리, 통상 별도파일 저장 X, 디렉토리만 생성
  • /bin : Linux 기본 명령어 (Built-in) 저장
  • /boot : Linux 부팅 관련 파일 저장
  • /dev : 디바이스 파일 저장
  • /etc : 환경설정 파일 저장
  • /root : root 사용자 홈 디렉토리
  • /home : 일반 사용자 홈 디렉토리
  • /lib : library 파일 및 kernel 모듈 저장
  • /usr : 일반 사용자 공통파일 저장, Windows OS의 Program Files 폴더 같은 개념
  • /mnt : 외부장치 연결 (mount) 파일 저장
  • /proc : Linux Kernel 작업 관리자에서 사용하는 임시파일 저장,
    가상파일 시스템, Linux 동작중에만 내용 저장
  • /var : 시스템 운용 중 생성되는 임시데이터 저장소
  • /sbin : 시스템 관리자 명령 저장
  • /tmp : 임시파일 저장소, 가상파일 시스템
  • /opt : 추가 패키지 저장

0개의 댓글